无法弄清楚如何在Python 3.5中杀死子进程

时间:2015-09-30 17:41:25

标签: python subprocess

我正在使用Python 3.5。我正在启动ffmpeg来记录一个文件,但我似乎无法杀死这个过程。我试过这个:

import os
import subprocess

pro = subprocess.Popen(recordcommand, shell=True)
...
do some things; wait for a stop command to come in 
...
if msg =='STOP':
     pro.kill()

我的过程开始很好,但它永远不会停止。我没有得到任何错误。我检查了API并认为我做得对。谁能告诉我哪里出错了?谢谢!

编辑:修复pro.kill到pro.kill()但仍然无法正常工作。这是我发送的命令:

 C:/Users/User/Desktop/ffmpeg-20150928-git-235381e-win64-static/bin/ffmpeg.exe -f dshow  -crossbar_video_input_pin_number 2 -i video="ATI AVStream Analog Capture" -f mpegts -fs 16777216 -y D:\Media\tvrecordings\SageSlingBox1onlocalhost4510TVTuner-0.mpgbuf 2>NUL

或许还有什么可以阻止它被杀?我忘了提到我的操作系统是Win 7 64位。

2 个答案:

答案 0 :(得分:1)

kill是一个函数,因此必须调用它来做任何事情。

尝试将其更改为:

if msg =='STOP':
     pro.kill()

答案 1 :(得分:0)

如果你试图杀死一些进程,试试这个:

import subprocess
import sys
proc = subprocess.Popen(
['sudo', 'kill', args], stdin=subprocess.PIPE)

proc.communicate(sys.argv[1])