Подпроцесс Python 3 SIGABRT - PullRequest
       8

Подпроцесс Python 3 SIGABRT

0 голосов
/ 04 февраля 2019

Я пытаюсь использовать subprocess.Popen для запуска инструмента Node.js, который в конечном итоге SSH подключается к другой машине.Когда я запускаю его в Python 2, все работает нормально.Однако, когда я выполняю ту же самую команду через Python 3, она вылетает с кодом ошибки -6 (я использовал check_output, чтобы определить, что он умирает с SIBABRT).

Теперь вот странная часть.Если я запускаю команду subprocess через терминал python3, она будет работать без сбоев.Однако, когда я добавляю оболочку Node.js вокруг нее (часть программного обеспечения, над которым я работаю, я ничего не могу с этим поделать), вот тогда он ломается.Python 2 работает с оболочкой Node.js.Я, честно говоря, не уверен, что это может быть на данный момент.

Вот код (не показывает команду, потому что это внутренний инструмент):

p = Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=1, universal_newlines=True)
output,stderr_data = p.communicate()
if p.returncode != 0:
    logging.error('return code')
    logging.error( "-----%r failed, status code %r" % (cmd, p.returncode) + "------")
    raise RuntimeError('%r failed, status code %s' % (cmd, p.returncode))

Я попытался проверить stderr и stdout, но они оба выглядят совершенно пустыми.

Я использую Python 3.6.4, Python 2.7.5, Node 6.9.1 и CentOS 7

РЕДАКТИРОВАТЬ: появляется SIGABRT каждый раз, когда я пытаюсь выполнить команду ЛЮБОГО узла черезPopen.Я попытался заменить cmd на ['node'] и ['node', 'test_node.js'], и оба умерли с SIGABRT ...

...