Как запустить бесконечный процесс через подпроцесс и собрать STDOUT и STDERR отдельно - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть программа на Python, которая выполняет subprocess.Popen, вот так;

process = subprocess.Popen(stand_alone_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = process.communicate()
print "out: ", out
print "err: ", err

Если мой stand_alone_command будет работать вечно, как мне получить то, что stand_alone_command выбрасывает на STDOUT и STDERR, чтобы я мог его зарегистрировать.

1 Ответ

0 голосов
/ 06 ноября 2018

Попробуйте читать из стандартного вывода вместо вызова communicate(), например ..

import subprocess
sac = ['tail', '-f', '/var/log/syslog']
process = subprocess.Popen(sac, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while 1:
    line = process.stdout.readline()
    if line:
        print(line)

Я думаю, вам нужно установить shell=False, но я нахожусь на Linux и Windows немного отличается.

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