c - Linux 在崩溃时自动重启应用程序 - 守护进程

标签 c linux embedded watchdog

我有一个运行嵌入式 Linux 的系统,它的持续运行至关重要。它基本上是一个与传感器通信并将数据中继到数据库和 Web 客户端的过程。

如果发生崩溃,如何自动重启应用程序?

此外,还有几个线程在进行轮询(例如套接字和 uart 通信)。如何确保没有线程挂起或意外退出?是否有易于使用且对线程友好的看门狗?

最佳答案

in this answer 所述,您可以使用 forkwaitpid 无缝重启您的进程。 .它不会消耗任何大量资源,因为操作系统将共享内存页面。

这只剩下检测挂起进程的问题。您可以使用 Michael Aaron Safyan 为此指出的任何解决方案,但更简单的解决方案是重复使用 alarm 系统调用,让信号终止进程(相应地使用 sigaction)。只要您不断调用 alarm(即只要您的程序在运行),它就会一直运行。一旦你不这样做,信号就会触发。
这样,不需要额外的程序,只使用可移植的 POSIX 东西。

关于c - Linux 在崩溃时自动重启应用程序 - 守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7376537/

相关文章:

python - 有限嵌入式设备上的纪元秒到日期转换

通过 PPM 在 C 中创建标志

C 尝试验证整数

Linux:加载共享库时出错:libQtSvg.so.4:无法打开共享对象文件:没有这样的文件或目录

c++ - C(嵌入式): Code size does not shrink when commenting FreeRTOS' RootTask

c - 如何阻止 RAM 测试破坏其自身的嵌入式 C 变量?

c - 在 for 循环中使用模数

c - 中间输入一个节点,形成一个排序链表

linux - Bash 脚本记录平均 ping 时间,一天每 20 秒一次

linux - 当打开的文件达到限制时会发生什么?