如何在 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)
我从这里得到的:
我有使用 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)
我从这里得到的: