我用作less
寻呼机,以便可以轻松读取应用程序的输出。我这样创建子流程:
a_process = subprocess.Popen(["less"], stdin=subprocess.PIPE)
然后我像这样写入寻呼机(多行):
a_process.stdin.write("hello\n".encode())
a_process.stdin.flush()
在我完成执行之前,我调用a_process.wait()
,用户能够按预期上下移动......如果用户点击q
寻呼机结束并且Python应用程序结束,因为Python脚本中没有更多的东西...... 但是,如果用户到达我提供给的输出的末尾less
,UI 将冻结...用户无法上升,无法退出使用q
...只能ctrl-c
完成执行。
为了避免达到这种状态,我缺少哪一部分?
less
不知道它已经到达 EOF,它正在等待更多的输出来填充下一页。要告诉它输出已完成,请关闭管道: