0

我需要创建一个足够灵活的代码来执行一些所需的清理,即使它运行的终端已关闭或 SSH 连接丢失。我将所有必要的代码封装到一个类的__del__方法中。但是,Python 似乎并没有在退出时调用它(与 C++ 不同)。我试过[atexit][1]了,但也没有被调用。

任何建议将不胜感激。

4

1 回答 1

2

您需要使用该signal模块。SIGHUP应该在关闭终端窗口或丢失 SSH 连接时发送到您的程序。你可以用 catchSIGINT代替,SIGHUP但这是一个包罗万象的解决方案。

import signal
import sys
def signal_handler(signal, frame):
    print 'Handling SIGHUP signal!'
    sys.exit(0)
signal.signal(signal.SIGHUHP, signal_handler)
print 'Waiting for SIGHUP'
signal.pause()

sudo kill -1 <pid of your python process>您可以通过在另一个终端窗口中发出来测试它。

于 2012-09-26T23:06:03.270 回答