我需要创建一个足够灵活的代码来执行一些所需的清理,即使它运行的终端已关闭或 SSH 连接丢失。我将所有必要的代码封装到一个类的__del__
方法中。但是,Python 似乎并没有在退出时调用它(与 C++ 不同)。我试过[atexit][1]
了,但也没有被调用。
任何建议将不胜感激。
我需要创建一个足够灵活的代码来执行一些所需的清理,即使它运行的终端已关闭或 SSH 连接丢失。我将所有必要的代码封装到一个类的__del__
方法中。但是,Python 似乎并没有在退出时调用它(与 C++ 不同)。我试过[atexit][1]
了,但也没有被调用。
任何建议将不胜感激。
您需要使用该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>
您可以通过在另一个终端窗口中发出来测试它。