自上次更新以来,我一直在运行的一个应用程序(用 C++ 编写)随机崩溃,但在两次崩溃之间它运行良好,所以我想让它继续运行。它因段错误而崩溃。我尝试编写一个简单的 C 程序,如下所示:
while (1) {
if (!program_is_running()) {
fp = popen("/usr/bin/program", "r");
fclose(fp);
}
else
sleep(15);
}
当被调用的程序段错误时,我的程序似乎停止了。exec
or (或某事)调用会system
比 ? 更好的选择popen
?在我的谷歌冒险中,我读过(并考虑过尝试)daemontools supervise,但我对此没有任何经验,而且使用 C 似乎应该是一个相对简单的问题,但是我在这里问这个问题也许不是......在这一点上,它比真正试图保持程序运行更好奇,因为有现成的工具来完成它。
在使用 C 的 Ubuntu 12.04 机器上重新启动因分段错误而崩溃的程序的简单而可靠的方法是什么?假设program_is_running()
返回0
为假,PID 为真。