subprocess.Popen执行程序以及关闭进程

您所在的位置:网站首页 ns怎么关闭程序 subprocess.Popen执行程序以及关闭进程

subprocess.Popen执行程序以及关闭进程

2024-07-04 20:29| 来源: 网络整理| 查看: 265

python中有一个很好用的方式来开启进程,即subprocess.Popen

正常来说,如果subprocess.Popen要执行的脚本是一个死循环的脚本,那么我们就需要手动的来关闭这个脚本,而无法等待这个脚本自己结束。

但是这个subprocess.Popen在关闭脚本进程时有一个坑。

举例说明:

python cmd= “python demo.py” Popen = subprocess.Popen(logcmd, stdout = subprocess.PIPE, shell=True)

用上面的方法来执行python demo.py,它的实际原理是另外开启一个cmd命令来运行python demo.py的命令,即使后面用popen.terminate()也只能关闭cmd的命令,cmd命令被kill掉后,python demo.py的线程由系统来托管,杀死不了python demo.py的进程,从而导致python demo.py不能退出.

正确的开启和关闭方法:

(1)开启方式:

import subprocess,os import signal cmd = "python demo.py" proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=-1,preexec_fn=os.setsid)

备注:preexec_fn=os.setsid一定要写上

(2)关闭方式:

proc.terminate() proc.wait() os.killpg(proc.pid, signal.SIGTERM) print("程序已关闭")


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3