Как я могу контролировать стандартный вывод с подпроцессом в Python? - PullRequest
0 голосов
/ 06 октября 2010

У меня есть приложение linux, которое запускается в интерактивном режиме из командной строки, используя stdin для приема команд.Я написал оболочку, используя подпроцесс для доступа к стандартному вводу, когда приложение находится в фоновом режиме.Теперь я могу отправлять ему команды, используя p.stdin.write (команда), но как мне следить за его ответами?

1 Ответ

1 голос
/ 06 октября 2010

Чтение из p.stdout для доступа к выводу процесса.

В зависимости от того, что делает процесс, вам, возможно, нужно быть осторожным, чтобы не блокировать p.stdout, в то время как p в свою очередь блокирует его stdin. Если вы точно знаете, что он будет выводить строку каждый раз, когда вы пишете в нее, вы можете просто чередовать цикл таким образом:

while still_going:
    p.stdin.write('blah\n')
    print p.stdout.readline()

Однако, если выходные данные являются более спорадическими, вы можете заглянуть в модуль select, чтобы чередовать чтение и запись более гибким способом.

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