我正在使用
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的情况下杀死了这个过程。我有什么建议可以手动完成吗?