2012-03-01 70 views
2

我有一些python文件,它是用來休眠一段時間然後終止一些進程的。 但是,如果用戶改變主意並想終止我的python程序,他必須去系統監視器。,因爲實例正在休眠。在睡眠時查殺python進程

import subprocess 
import os 
import signal 
import datetime 
import time 
def kill(): 
    time.sleep(3600) #sleep for 1 hour 
    #here goes terminating, for example "gedit" process after sleeping 
    proc = subprocess.Popen(["pgrep", "gedit"], stdout=subprocess.PIPE) 
    for pid in proc.stdout: 
     os.kill(int(pid), signal.SIGTERM) 
if __name__ == "__main__": 
    kill() 

我知道我必須創建另一個進程來殺死這個睡覺的人,如果用戶想要的,但我不明白如何。請幫助

+1

'subprocess.call([ 'pkill的', '的gedit'])'而非'pgrep' – jfs 2012-03-01 15:50:17

回答

1

在命令行環境中,可以使用Ctrl+C (SIGINT)中斷腳本:

$ python -c'import time; time.sleep(300)' 
^CTraceback (most recent call last): 
    File "<string>", line 1, in <module> 
KeyboardInterrupt 
+0

我做我的用戶文件可執行文件。他按照雙擊的方式運行它。沒有終端。附:謝謝你,隊長:) – Feanor 2012-03-01 16:12:16

+1

@費爾諾:你可以用「取消」按鈕來顯示GUI,例如[countdown.py](https://gist.github.com/1951815) – jfs 2012-03-01 18:16:44