睡觉时杀死python进程

时间:2012-03-01 15:34:36

标签: python linux subprocess

我有一些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()

我知道如果用户需要,我必须创建另一个进程来杀死这个睡眠的进程,但我无法理解。请帮忙

2 个答案:

答案 0 :(得分:1)

在命令行环境中,您可以使用Ctrl+C (SIGINT)

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

答案 1 :(得分:1)

按住Ctrl + C组合键,即使在Mac上也将关闭进程。如果您不喜欢该错误消息,请尝试以下代码。

from time import sleep
try: #Try to do this
    sleep(3600) #One hour sleep
    '''vvv Your code goes here vvv'''
    
    '''^^^^^^^^^^^^^^^^^^^^^^^^^^^'''
except KeyboardInterrupt: #In the case of keyboard interrupt
    exit() #Kill process, end code, no errors, except that you will see ^C upon keyboard interrupt. This is also Ctrl+C on mac.
#EOF

上面的代码适用于2.4-3.10。

希望能有所帮助; D