申请可能会死的方式是什么?

时间:2014-09-06 15:58:43

标签: linux signals

我使用一些复杂的硬件开发linux守护进程,我需要知道应用程序如何退出(正常或异常)以创建正确的清理功能。当我从文档中读取时,应用程序可能会死于:
1.接收信号 - sigwaitsigaction等 2. exit
3. kill
4. tkill

还有其他一些方法可以退出或死亡吗?

2 个答案:

答案 0 :(得分:1)

在你的评论中,你写道,你担心应用程序可能会死“异常的方式”。

1 只有一个解决方案 - 应用程序之外的代码。特别是,应用程序在终止时(正常或异常)持有的所有句柄都由内核完全关闭。

如果您有特殊硬件的驱动程序,请在驱动程序收到设备已关闭的通知时进行清理。如果您还没有自定义驱动程序,则可以使用第二个用户模式进程作为监视程序。只需通过管道将看门狗连接到主进程......它将在主应用程序关闭时收到信号。


除了程序员有一定程度的控制权之外,例如导致分段错误的狂野指针错误,总有oom-killer,它甚至可以消除无错误的进程。因此,应用程序还应检测其监视程序的意外丢失并生成新的监视程序。

答案 1 :(得分:0)

当系统或用户不需要时,您的应用应该自行完成。

使用像kill -9 PROCESS这样的外部命令可能会给你的应用程序带来一些错误,因为你不知道你的应用程序在那一刻做了什么。

尝试在你的应用程序上添加一个子系统来控制你的应用程序状态......就像一个真正的守护进程允许这样的东西:

yourapp service status  or  /etc/init.d/yourapp status
yourapp service start  or  /etc/init.d/yourapp start
yourapp service stop  or  /etc/init.d/yourapp stop

通过这种方式,您的应用程序可以每次都正常完成,用户可以轻松控制它。

此致