此程序主要利用linux c中的信号拦截与处理。
gcc 此程序.c
使用killall 程序名 或 kill 程序名可以输出信号名,注意kill -9 程序获取不了信号,错误处理要手动执行。
#include
#include
#include
#include
#include
#include
int ha_destroy()
{
//处理程序退出
return 1;
}
void sig_endler(int signo)
{
switch(signo)
{
case SIGQUIT:
{
printf("SIGQUIT program");
ha_destroy();
exit(0);
}
break;
case SIGINT:
{
printf("SIGINT program");
ha_destroy();
exit(0);
}
break;
//优雅退出处理,可以添加必要的操作
case SIGTERM:
{
printf("SIGTERM program");
ha_destroy();
exit(0);
}
break;
default:
{
//正常退出
ha_destroy();
exit(0);
}
break;
}
}
int main()
{
signal(SIGINT , sig_endler);
signal(SIGQUIT , sig_endler);
signal(SIGTERM , sig_endler);
while(1)
{
sleep(1);
//逻辑
}
}



