【发布时间】:2011-02-19 09:58:45
【问题描述】:
我正在开发一个需要检测系统关闭的应用程序。 但是,我还没有找到任何可靠的方法来获取有关此事件的通知。
我知道在关闭时,我的应用会收到SIGTERM 信号,然后是SIGKILL。我想知道是否有任何方法可以查询SIGTERM 是否是关机序列的一部分?
有人知道是否有办法以编程方式(C API)查询吗?
据我所知,系统没有提供任何其他方法来查询即将关闭的情况。如果是这样,那也可以解决我的问题。我也一直在尝试runlevels,但runlevels 的更改似乎是即时的,并且没有任何事先警告。
【问题讨论】:
-
有趣的问题。你想停止关机还是只收到通知?
-
好吧,我已经放弃了。我决定将任何 SIGTERM 视为操作系统想要关闭的消息。我的(蹩脚??)理由是 SIGTERM 的主要目的是礼貌地要求应用程序干净地退出,如果他/她不希望应用程序退出,那么具有足够权限的人不太可能发出 SIGTERM。即使它不是关机,应用程序也应该听它。这让我想到了另一个问题。关闭序列中 SIGTERM 和 SIGKILL 之间的最短时间是多少?我知道可以使用 -t 开关进行配置,但有最低限制吗?
标签: c linux sigterm system-shutdown