关于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("程序已关闭")
posted @ 2025-02-21 14:27  学不会xuebuhui  阅读(87)  评论(0)    收藏  举报
Language: javascript //图片预览