2012-03-01 11 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を殺すために別のプロセスを作成する必要があります知っているが、私はどのように理解することはできません。ヘルプしてください

あなたが Ctrl+C (SIGINT)を使用してスクリプトを中断することができ、コマンドライン環境で
+1

'subprocess.call([ 'pkillは'、 'geditの'])'の代わりに 'pgrep' – jfs

答えて

1

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

の私が作りました私のファイルはユーザのために実行可能です。彼はdoube-clickとしてそれを実行します。ターミナルはありません。 P.S.キャプテン、ありがとうございます:) – Feanor

+1

@Feanor:GUIに[キャンセル]ボタン(例:[countdown.py](https://gist.github.com/1951815))を表示することができます。 – jfs