问题描述
您好,我正在尝试使用python的signal
模块设置SIGKILL处理信号,但遇到OSError异常。
Python:3.7.5
OS:MacOS Mojave
class MyClass:
def __init__(self,*args,**kwargs):
signal.signal(signal.SIGKILL,self.gracefull_shutdown)
signal.signal(signal.SIGTERM,self.gracefull_shutdown)
def gracefull_shutdown(self,signum,frame):
# gracefull_shutdown code here
这给了我以下内容
signal.signal(signal.SIGKILL,self.gracefull_shutdown)
File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/signal.py",line 47,in signal
handler = _signal.signal(_enum_to_int(signalnum),_enum_to_int(handler))
OSError: [Errno 22] Invalid argument
SIGTERM处理有效(通过注释SIGKILL
处理程序)。我听说MacOS支持SIGKILL,不是吗?
解决方法
从man 7 signal
,它说
信号 SIGKILL 和 SIGSTOP 不能被捕获、阻止或忽略。