python - 使用 less 作为寻呼机时到达 EOF 时无法返回

问题描述 投票:0回答:1

我使用

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
才能完成执行。

为了避免达到这种状态,我缺少哪一部分?

python subprocess less
1个回答
0
投票

less

 不知道它已经到达 EOF,它正在等待更多输出来填满下一页。

要告诉它输出已完成,请关闭管道:

close(a_process.stdin)
    
© www.soinside.com 2019 - 2024. All rights reserved.