2

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

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

此致

马立克

4

1 回答 1

1

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

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

于 2013-10-09T11:54:06.810 回答