如何在 python 中终止子进程

How to kill a subprocess in python

我有使用 gst-launch 命令在 linux 电脑上运行网络摄像头的代码。

当我终止进程时,网络摄像头window 没有关闭,但程序停止了运行。我希望网络摄像头 window 也被关闭。 你能帮我解决这个问题吗?

import subprocess
import time
import os
import signal

cmd = "gst-launch-1.0 -v v4l2src ! video/x-raw,format=YUY2 ! videoconvert ! autovideosink"
process = subprocess.Popen(cmd, shell = True)
time.sleep(5)
#print(subprocess.Popen.pid)
#process.terminate()
os.kill(process.pid, signal.SIGKILL)
#process.kill()

希望对您有所帮助。

import os
import signal
import subprocess

process = subprocess.Popen(cmd, shell = True)
os.killpg(os.getpgid(process.pid), signal.SIGTERM)

对我来说,当前接受的答案也会终止主程序。如果您遇到同样的问题并希望它继续,您还必须将参数 preexec_fn=os.setsid 添加到 popen。所以总共:

import os
import signal
import subprocess

process = subprocess.Popen(cmd, shell=True, preexec_fn=os.setsid)
os.killpg(os.getpgid(process.pid), signal.SIGTERM)

我从这里得到的: