如何获取Python子进程的输出并在之后终止它?

303

我想获取我的子流程的输出。由于它无限期运行,我想在满足某些条件时终止它。

当我使用启动子check_output进程时,我得到了输出,但是没有终止进程的句柄:

output = subprocess.check_output(cmd, shell=True)

当我使用Popen启动子流程时run,我得到一个终止流程的句柄,但没有输出。

p = subprocess.Popen(cmd, shell=True, preexec_fn=os.setsid)

我怎样才能两者兼得?

让·弗朗索瓦·法布尔

什么时候可以知道您已经获得了完整的过程输出?当进程终止时。因此,无需手动终止它。只需等待它结束,然后使用即可check_output

现在,如果您要等待给定模式出现,然后终止,这就是其他内容。只需逐行读取,如果某些模式匹配,则中断循环并结束该过程

p = subprocess.Popen(cmd, shell=True, preexec_fn=os.setsid) # add stderr=subprocess.PIPE) to merge output & error
for line in p.stdout:
   if b"some string" in line:  # output is binary
       break
p.kill() # or p.terminate()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python 2.7-运行子进程并在用户时间超过最大时间时终止它

Python获取子进程的输出

如何在终止前从生成的子进程中获取实时标准输出数据?

Python子进程:在过程终止后获取所有标准输出数据

如何获取包含管道的Python子进程命令的输出?

Python:如何在每次输出而不是终止时获取子过程的输出?

python中的子进程终止

如何从Python子进程收集输出

如何从python子进程检索输出

如何终止以shell = True启动的python子进程

子进程在终止之前获取结果

使用python multiprocessing子进程如何终止另一个子进程?

终止子进程的父进程的输出是什么?

如何从使用多处理运行脚本的python2子进程获取输出?

psutil.Popen完成之后但终止之前,如何获取cpu_times的进程运行

Python:将 python 脚本作为子进程运行并获取输出

Python 3:我可以运行一个子进程并获取它的输出,而不知道它正在被管道传输吗?

如何通过子进程获取输出和返回代码?

如何使用子进程获取命令的标准输出?

Python 2子进程:无法从readline获取输出

从python中的子进程获取所有输出

如何推送文件并在之后忽略它

子进程如何杀死其他子进程然后终止?

父进程始终在子进程之后打印输出

子进程终止时如何运行函数?

如何处理异常子进程终止?

如何仅获取进程的父PID并排除使用grep链接到它的子进程

Bash:当脚本终止时,如何使脚本的子进程终止?

捕获python子进程的输出