我有一个运行嵌入式Linux的系统,它需要持续运行。基本上,它是一个用于与传感器通信并将数据传递到数据库和Web客户端的进程。
如果发生崩溃,如何自动重新启动应用程序?
此外,有几个线程正在进行轮询(例如套接字和串口通信)。如何确保没有任何线程被卡住或意外退出?是否有一个易于使用的看门狗可以支持多线程?
如果发生崩溃,如何自动重新启动应用程序?
此外,有几个线程正在进行轮询(例如套接字和串口通信)。如何确保没有任何线程被卡住或意外退出?是否有一个易于使用的看门狗可以支持多线程?
很遗憾,看门狗定时器和解决死锁问题都不是简单的问题。我不知道有什么通用的方法来解决它,而且我见过的少数方法相当丑陋,也不能保证百分之百无错。然而,tsan 可以通过静态分析帮助检测潜在的死锁场景和其他线程问题。
使用此脚本来运行您的应用程序
#!/bin/bash
while ! /path/to/program #This will wait for the program to exit successfully.
do
echo “restarting” # Else it will restart.
done
你也可以将这个脚本放在/etc/init.d/
目录下,以便作为守护进程启动。