我试图让我的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结束后。