我有一些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()
我知道如果用户需要,我必须创建另一个进程来杀死这个睡眠的进程,但我无法理解。请帮忙
答案 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