gpt4 book ai didi

python - 如何杀死由 python os.system() 创建的进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:53 25 4
gpt4 key购买 nike

我有一个使用 python3 的 Flask 应用程序。有时它会创建守护进程来运行脚本,然后我想在超时时终止守护进程(使用 signal.SIGINT)。

但是,一些由 os.system 创建的进程(例如,os.system('git clone xxx'))在守护进程被杀死后仍在运行。所以我该怎么做?谢谢大家!

最佳答案

为了能够终止一个进程,您需要它的进程 ID(通常称为 pid)。 os.system 没有给你,只是返回子进程返回码的值。

较新的 subprocess 模块为您提供了更多的控制权,但代价是更加复杂。特别是它允许您等待进程完成,如果需要超时,并允许您访问子进程的 pid。虽然我不是它的使用专家,但这似乎工作。请注意,此代码需要 Python 3.3 或更高版本才能将 timeout 参数用于 Popen.wait 调用。

import subprocess

process = subprocess.Popen(['git', 'clone', 'https://github.com/username/reponame'])
try:
print('Running in process', process.pid)
process.wait(timeout=10)
except subprocess.TimeoutExpired:
print('Timed out - killing', process.pid)
process.kill()
print("Done")

关于python - 如何杀死由 python os.system() 创建的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43322201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com