我在用
std = subprocess.PIPE
并检查输出的每一行中的特定术语。如果我“完成”,我会通过 os.kill 手动终止子进程:
p = subprocess.Popen(['vprobe' ,'/vprobe/myhello.emt'], shell = False, stdout=subprocess.PIPE, preexec_fn=os.setsid)
while True:
line = p.stdout.readline()
logfile.write(line)
if re.search("done", line):
break
print "waiting"
os.kill(p.pid, signal.SIGINT)
该进程确实被杀死(我在unix中使用'ps'命令进行了检查)但最后我得到一个错误:
close failed in file object destructor:
Error in sys.excepthook:
Original exception was:
我认为这很可能是因为我在没有实际关闭 PIPE 的情况下终止了该进程。有什么建议我可以手动完成吗?