在Python中停止进程

时间:2014-06-21 21:28:56

标签: python python-2.7 subprocess popen os.system

我正在运行一个程序,我希望在按下某个按钮时停止该程序。

我正在考虑在后台运行该过程,以便在此过程中随时按下该按钮,它会停止它。

我从文档中读取了子进程的内容,但我是初学者,我不知道如何使用它,任何帮助都表示赞赏。

def put(command):
        os.system(command)

        if direct == "":
            time.sleep(.5)
            arg1 = put("sudo ffmpeg -i \"" + q3 + "\" -f s16le -ar 22.05k -ac 1 - | sudo ./pifm - " + str(freq)) 
            subprocess.Popen(arg1)
            while True:
                if RPIO.input(25) == GPIO.LOW: #if button is pushed, kill process (arg1)
                    Popen.terminate()

2 个答案:

答案 0 :(得分:2)

如果要保持对子流程的控制,最好使用subprocess模块。如果您是通过Popen创建的,则可以通过kill()terminate()方法将其停止。

实施例

import subprocess
# ...
sub = subprocess.Popen(command)
# ...
sub.kill()

即使有很多command同时出现,你确定要杀死自己的孩子

答案 1 :(得分:0)

你需要在实例 od Popen:

上调用终止
if direct == "":
    time.sleep(.5)
    arg1 = put("sudo ffmpeg -i \"" + q3 + "\" -f s16le -ar 22.05k -ac 1 - | sudo ./pifm - " + str(freq)) 
    myproc = subprocess.Popen(arg1)
    while True:
        if RPIO.input(25) == GPIO.LOW: #if button is pushed, kill process (arg1)
            myproc.terminate()