进程被外部请求终止(SIGTERM/SIGINT)的解决方法
进程被外部请求终止时,可以通过捕获信号并处理来解决。
常见的信号有 SIGTERM 和 SIGINT,分别代表终止信号和中断信号。可以使用 signal() 函数来捕获这些信号:
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
void handle_signal(int signal)
{
printf('Received signal %d\n', signal);
// 这里可以添加处理逻辑,如保存数据、清理资源等
exit(0);
}
int main()
{
// 注册信号处理函数
signal(SIGTERM, handle_signal);
signal(SIGINT, handle_signal);
// 进程主逻辑
while (1) {
// do something
}
return 0;
}
在上面的示例中,当进程接收到 SIGTERM 或 SIGINT 信号时,handle_signal() 函数会被调用,可以在该函数中添加处理逻辑,如保存数据、清理资源等。
另外,还可以使用 sigaction() 函数来设置信号处理函数,该函数可以提供更多的处理选项,如在处理信号期间阻塞其他信号等。
原文地址: https://www.cveoy.top/t/topic/nVEn 著作权归作者所有。请勿转载和采集!