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

2024-09-28 21:06:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图让我的python程序解析strace命令的输出,使其更易于调试。你知道吗

但是,当我试图从readline的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 program不能结束于自身,需要读取它当前发送的内容,因为它当前正在发送,而不是在strace结束之后。你知道吗


Tags: outputreadlineifherestdoutargprocpid