我正在研究一个需要检测系统关闭的应用程序。 但是,我还没有找到任何可靠的方式获得有关此事件的通知。如何检测Linux上挂起的系统关机?
我知道在关机时,我的应用将收到一个SIGTERM
信号,然后是SIGKILL
。我想知道是否有任何方法可以查询SIGTERM
是否是关机序列的一部分?
是否有人知道是否有方法以编程方式查询(C API)?
据我所知,系统不提供任何其他方法来查询即将关机。如果是这样,那也能解决我的问题。我一直在尝试runlevels
,但runlevels
的变化似乎是瞬间的,没有任何预先警告。
有趣的问题。你想停止关机还是仅仅收到通知? – ereOn 2010-05-14 07:17:26
我只是想通知。 – 341008 2010-05-14 08:07:51
我已经放弃了。我已决定将任何SIGTERM视为OS要关闭的消息。我的(蹩脚的)理由是,SIGTERM的主要目的是礼貌地要求应用程序完全退出,并且如果具有足够特权的人不希望应用程序退出,则发出SIGTERM不太可能。即使它不是关机应用程序应该听取它。这给我带来了另一个问题。关机序列中SIGTERM和SIGKILL之间的最短时间是多少?我知道它可以使用-t开关配置,但是有最小限制吗? – 341008 2010-05-19 10:56:15