如何在python3中中止等待sys.stdin?

时间:2016-07-17 15:54:36

标签: python-3.x stdin sys

我正在运行一个带有两个线程的脚本,一个从子进程读取的线程,以及主线程。

在主线程中,我正在读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,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我会交换线程。从主线程中的子进程读取,并在另一个线程中执行阻塞sys.stdin的操作。这样你可以将daemon=True传递给threading.Thread,这会在主线程退出时退出线程。