我正在研究需要检测系统关闭的应用程序。但是,我没有找到任何可靠的方式来接收此事件的通知。
我知道在关机时,我的应用会收到一个SIGTERM信号,然后是SIGKILL。我想知道是否有任何方法可以查询a SIGTERM是否 为关机序列的一部分 ?
SIGTERM
SIGKILL
有谁知道是否有一种以编程方式查询(C API)的方法吗?
据我所知,系统没有提供任何其他方法来查询即将发生的关机。如果确实如此,那也将解决我的问题。我也一直在尝试runlevels,但是更改runlevels似乎是瞬时的,并且没有任何事先警告。
runlevels
无法确定a SIGTERM是否为关闭序列的一部分。要检测关闭顺序,您可以使用rc.d诸如ereOn和Eric Sepanson建议的脚本,也可以使用诸如DBus的机制。
rc.d
但是,从设计的角度来看,SIGTERM即使它不是关闭的一部分,也没有必要忽略它。SIGTERM的主要目的是要 礼貌地要求 应用程序干净退出,如果拥有足够特权的人SIGTERM不希望该应用程序退出,则不太可能发出a 。