我正在研究一個需要檢測系統關閉的應用程序。 但是,我還沒有找到任何可靠的方式獲得有關此事件的通知。如何檢測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