如何从linux应用程序检测关机/重启

时间:2013-10-09 10:43:35

标签: c linux shutdown reboot

我有一个用C编写的应用程序,它作为一个守护进程运行,需要在系统处于关机或重启状态时通过RS232发送一些东西,并且需要区分这两者。 所以我的想法是: 在我的脚本的“停止”情况下的应用程序脚本/etc/init.d/my_app中,我将运行/ sbin / runlevel命令来获取当前的运行级别: 0 - 关闭状态 6 - 重启状态 然后我将执行一些命令来通知我的守护进程,状态是什么,守护进程将通过rs执行通信,然后退出。

我认为它应该可行,但它可能不是最好的解决方案,特别是因为我的应用程序已经作为守护进程运行,也许我可以直接从系统/内核/库或通过unix socket等接收一些信号。 / p>

祝你好运

马立克

1 个答案:

答案 0 :(得分:0)

我不确定在系统关闭时哪个信号发送到应用程序。我最好的猜测是SIGTERM,如果应用程序没有关闭SIGKILL。那么你是否试图抓住SIGTERM并正确关闭你的程序?网上有很多examples如何做到这一点。

对于更复杂的流程处理,您可以将SIGUSR1,SIGUSR2发送到您的应用程序。