如何在 Python 中终止我的子进程 [重复]

Posted

技术标签:

【中文标题】如何在 Python 中终止我的子进程 [重复]【英文标题】:How do I terminate my subprocesses in Python [duplicate] 【发布时间】:2015-07-16 23:43:52 【问题描述】:

如下所示,我有两个子流程

cmd1='arecord -d 0 -f cd -t wav test.wav'
cmd2='raspivid -o video.h264 -fps 25 -t 0'

pro1 = subprocess.Popen(cmd1, shell=True)
pro2 = subprocess.Popen(cmd2, shell=True)

我想用树莓派同时录制音频和视频。从现在开始,我可以启动这两个程序,但我不能停止这些程序。有人可以帮帮我吗?

或者有什么想法可以通过简单的方式完成这个过程?

【问题讨论】:

【参考方案1】:

来自文档:

Popen.terminate() 停止孩子。在 Posix 操作系统上,该方法发送 SIGTERM 给孩子。在 Windows 上,Win32 API 函数 调用 TerminateProcess() 来停止子进程。

2.6 版中的新功能。

Popen.kill() 杀死孩子。在 Posix 操作系统上,该函数发送 SIGKILL 给孩子。在 Windows 上,kill() 是 terminate() 的别名。

【讨论】:

【参考方案2】:

Python's subprocess module 的文档包括对Popen.terminate()Popen.kill() 的描述。

【讨论】:

以上是关于如何在 Python 中终止我的子进程 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Windows 上使用 Python 终止正在运行的子进程

如何在 python 中杀死使用 subprocess.call 调用的子进程? [复制]

如何使用 asyncio 从使用 SubprocessProtocol 的子进程中读取并在任意点终止该子进程?

带有管道的子进程调用[重复]

终止正在运行的子进程调用

django celery 终止任务的子进程