我需要创建一个足够灵活的代码来执行一些必需的清理,即使它运行的终端关闭或SSH连接丢失也是如此。我将所有必要的代码包装在一个类__del__
方法中。但是,Python似乎并没有在退出时调用它(与C ++不同)。我试过了[atexit][1]
,但它也没有被调用。
任何建议都将受到赞赏。
答案 0 :(得分:2)
您需要使用signal
模块。应该在关闭终端窗口或丢失SSH连接时将SIGHUP
发送到您的程序。你可以抓住SIGINT
而不是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>
来测试这一点。