关于python sbprocess 子进程的归属进程的关闭问题
subporcees多个任务的关闭(记录)
参考连接:https://blog.csdn.net/skyli114/article/details/127324383
防止连接丢失我自己记录一下
使用subprocess起的进程,
不使用communicate()是非阻塞的,
关闭的时候,gpt查到的有两种
1
process.terminate() # 超时后终止进程
process.wait() # 等待进程结束
2
process.kill() # 强制终止进程
process.wait() # 等待进程结束
两种都试了没用,这样只能关闭subprocess不能关闭subproces执行的命令
正确方式(亲测)
(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("程序已关闭")

浙公网安备 33010602011771号