2

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

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

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()
4

2 回答 2

1

希望它会帮助你。

import os
import signal
import subprocess

process = subprocess.Popen(cmd, shell = True)
os.killpg(os.getpgid(process.pid), signal.SIGTERM)
于 2019-10-24T07:36:50.257 回答
1

对我来说,当前接受的答案也将终止主程序。如果您遇到同样的问题并希望它继续,您还必须将参数添加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)

我从这里得到这个:https ://stackoverflow.com/a/4791612/11642492

于 2020-07-29T21:11:53.940 回答