2014-06-21 146 views
2

我正在運行一個程序,當某個按鈕被按下時,我想停止該程序。在Python中停止進程

我正在考慮在後臺運行進程,以便可以在進程中隨時按下按鈕,並且會停止它。

我從文檔中讀取子進程的內容,但我是初學者,我不知道如何使用它,任何幫助表示讚賞。

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() 
+0

你想有一個Python程序殺死其他進程,或將其殺死本身? – aruisdante

+0

可能的重複[在python中通過名稱殺死進程](http://stackoverflow.com/questions/2940858/kill-process-by-name-in-python) – aruisdante

+0

@aruisdante我想殺死運行的arg1命令,運行它需要一段時間,並且我希望能夠在按下按鈕時停止它。謝謝你的回覆! – CodyJHeiser

回答

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

如果你想保持你的子進程控制,你最好使用subprocess模塊。如果您通過Popen創建它,您將能夠通過kill()terminate()方法停止它。

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

而且你確信你正在殺死自己的孩子,即使有無數command simutaneously運行