Программа 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.