我用p.terminate
终止我的子进程,我是这样打开的:
p = Popen([sys.executable, args], stdin=PIPE, stdout=PIPE, stderr=open("error.txt", 'a'))
如您所见,我将所有错误重定向到一个文本文件,这样我就可以轻松地读取它。 当子进程终止时,我错误地使用此功能将某些内容打印到此文件中:
signal.signal(signal.SIGTERM, sigterm_handler) # sets shutdown_flag
while True:
if shutdown_flag:
print("Some Useful information", file=sys.stderr)
但是:文件总是空的。这是因为调用terminate
时管道关闭了,此时从子进程写入的内容丢失了吗?还是有其他我看不到的问题?你知道吗
一般来说,终止线程不是一个好主意。相反,你应该要求它停止使用线程。事件. 你知道吗
然后,使用以下命令代替p.terminate():
相关问题 更多 >
编程相关推荐