我有一个使用扭曲框架的python应用程序.
我利用存储在twistd生成的pidfile中的值.启动程序脚本会检查它是否存在,如果pidfile已存在,则不会生成守护程序进程.
但是,twistd在获取SIGKILL信号时不会删除.pid文件.这使得启动程序脚本认为守护程序已在运行.
我意识到停止守护进程的正确方法是使用SIGTERM信号,但问题是当启动守护进程的用户注销时,守护进程永远不会收到SIGTERM信号,所以显然它被SIGKILL杀死了.这意味着一旦用户注销,他将永远无法再次启动守护进程,因为pidfile仍然存在.
在这种情况下,有什么方法可以让文件消失吗?
解决方法:
从signal(2)手册页:
The signals
SIGKILL
andSIGSTOP
cannot be caught or ignored.
因此,该进程无法运行任何清理代码来响应该信号.通常,您只使用SIGKILL来终止不响应SIGTERM(可以捕获)的进程.