Вызов другого процесса из процесса python / child требует доступа к оболочке - PullRequest
0 голосов
/ 21 апреля 2010

Я вызываю программу на C / C ++ из python с Popen, код Python должен наблюдать за поведением дочернего процесса и собирать некоторые данные для его собственной работы.

Проблема в том, что код C уже использует каналы для вызова некоторых команд оболочки - поэтому после моего выполнения из python программа C не может выполнить команду оболочки bash.

Есть ли способ вызова из Popen, чтобы указать, что дочерний процесс должен выполнить свою собственную команду канала в оболочке ???

Я пробовал с shell = True, но не помогает!

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Из вашего описания кажется, что вы используете Popen для выполнения командной строки, которая заставляет Popen вызывать оболочку.

Вместо этого вам нужно, чтобы Popen вызывал вашу программу напрямую, например:

from subprocess import Popen,PIPE
p = Popen(['/my/fancy/program','-myarg1','-myarg2'],stdout=PIPE)
from_process = p.communicate()[1]
0 голосов
/ 16 февраля 2011

Лучшим способом, вероятно, является использование TCP-соединения с localhost. Если вы используете * nix, вы, вероятно, можете сделать это, открыв временный файл и опросив его из хост-приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...