我正在使用 Python 及其子进程库来使用 strace 检查调用的输出,具体如下:
subprocess.check_output(["strace", str(processname)])
但是,这只能给我输出after被调用的子进程已经完成,这对我的用例来说非常有限。
我需要过程中的一种“流”或实时输出,所以我需要读取输出while该进程仍在运行,而不是仅在完成后才运行。
有没有一种使用子流程库来实现此目的的便捷方法?
我正在考虑每 x 秒进行一次轮询,但没有找到有关如何在文档中实现此功能的任何提示。
提前谢谢了。
从 Python 3.2 开始(当上下文管理器支持添加到Popen
),我发现这是从子进程连续流输出的最直接的方法:
import subprocess
def run(args):
with subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as process:
for line in process.stdout:
print(line.decode('utf8'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)