我希望我的python脚本在被用户杀死时执行某些操作。 我尝试使用atexit,但它没有用。 抱歉我的英语不好,谢谢。
答案 0 :(得分:1)
在基于POSIX的系统上(OS X,Linux)您可以使用以下代码捕获用户SIGINT(当他们按ctrl-c时)和SIGTERM:
import signal
import sys
def signal_term_handler(signal, frame):
print 'got SIGTERM/SIGINT'
sys.exit(0)
signal.signal(signal.SIGTERM, signal_term_handler)
signal.signal(signal.SIGINT, signal_term_handler)
在Windows上你应该可以
signal.signal(signal.CTRL_C_EVENT, signal_term_handler)
signal.signal(signal.CTRL_BREAK_EVENT, signal_term_handler)
请注意,通过设计,您可以捕获一些信号(POSIX系统上的SIGKILL) - 这是为了保护操作系统免受行为不端的程序的影响。
答案 1 :(得分:0)
您想要安装signal handler。您要处理的特定信号取决于您运行的操作系统:Windows使用的信号集不同于* nix / Mac。
答案 2 :(得分:0)
import atexit
def sayHelloWorld():
print("Hello, World!")
atexit.register(sayHelloWorld)
atexit确实有效,你必须正确使用它。前往https://docs.python.org/2/library/atexit.html获取更多相关信息