尝试从另一个程序的stdout读取时,python程序挂起

时间:2015-07-17 20:16:17

标签: python

我试图让我的python程序解析strace命令的输出,使其更具可读性。

然而,当我尝试从stdout获取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 progarm不能自行结束,需要读取当前正在发送的内容,因为它当前正在发送,而不是在strace结束后。

0 个答案:

没有答案