Я пытаюсь использовать 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 ...