我有一个用 C 语言编写的应用程序,在 Linux 设备服务器上运行。如果应用程序崩溃或挂起,我希望系统重新启动。设备服务器附带了一个我认为实现此功能的示例应用程序,但我不确定。通过从中获取似乎实现此功能的东西,我有以下骨架:
int terminate=0;
int main () {
struct sigaction sigact;
sigact.sa_handler = sighandler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
sigaction(SIGTERM,&sigact,0);
while (terminate == 0)
{
// my main application functions
}
SDK_reboot(); // reboots my device server
}
void sighandler(int sig)
{
if (sig == SIGTERM)
terminate = 1;
}
我基本上想了解上面代码中发生了什么,如果有必要,改变它以满足我的需要。是 'sigaction(SIGTERM,&sigact,0);' 导致 SIGTERM 响应我的应用程序挂起或崩溃的行?如果不是,那么正确的代码是什么?另外,一般来说,以上是在应用程序崩溃/挂起时实现重启的好方法吗?还是我偏离了轨道?提前非常感谢。