如何让我的脚本在被用户杀死时做一些事情?

时间:2014-06-23 00:50:29

标签: python python-2.7

我希望我的python脚本在被用户杀死时执行某些操作。 我尝试使用atexit,但它没有用。 抱歉我的英语不好,谢谢。

3 个答案:

答案 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获取更多相关信息