我正在运行一个带有两个线程的脚本,一个从子进程读取的线程,以及主线程。
在主线程中,我正在读stdin
,如下所示:
for line in sys.stdin:
if proc.poll() != None:
break
proc.stdin.write(line)
proc.stdin.flush()
<other things happen here>
(proc
是外部子流程)
现在,这很有效,直到我想要关闭我的程序。当另一个线程中的进程退出时,我希望整个程序停止,但主线程仍然等待输入stdin
的内容。我怎么能中止呢?
基本上,我希望stdin
发信号通知EOF
,但我不知道该怎么做。
答案 0 :(得分:0)
我会交换线程。从主线程中的子进程读取,并在另一个线程中执行阻塞sys.stdin
的操作。这样你可以将daemon=True
传递给threading.Thread
,这会在主线程退出时退出线程。