Программа Python зависает при попытке прочитать из стандартного вывода из другой программы

Я пытаюсь заставить мою программу на python анализировать выходные данные команды strace, чтобы сделать ее более читаемой для целей отладки.

Однако, когда я пытаюсь получить readline из его стандартного вывода, он просто зависает там после второго вызова, при этом первый раз просто пустой строкой.

def openProgram():
     print ("Search for pid of progarm")
     pids = subprocess.check_output(["pidof", "python"])
     pid = pids.split()[-1]
     if pid:
         print ("Pid found at " + str(pid) + "attaching to process")
         pname = "strace"
         arg = " -p " + str(pid) + " -s9999 -e write"
         proc = subprocess.Popen(pname + arg , shell=True, stdout = subprocess.PIPE)
         return proc
#(some other code here)
proc = openProgram()
if proc:
    while proc.poll() is None:
         output = proc.stdout.readline() #hangs here

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

0 ответов

Другие вопросы по тегам