linux下的程序,有时候需要在接到一些终止信号后,进行清理工作再退出。
//信号2的处理函数
void SignalHandler_2(int signal) {
//CleanUp
//
exit(2);
}
int main(int argc, char* argv[]) {
//处理信号2
struct sigaction act_2, act_15; act_2.sa_handler=SignalHandler_2; act_15.sa_handler=SIG_IGN; //忽略信号15(比如不想让其他信号对程序有影响) sigemptyset(&act_2.sa_mask); sigaddset(&act_2.sa_mask, SIGTERM | SIGINT); //在对信号2进行处理的过程中,屏蔽后续的2和15信号 sigaction(SIGINT, &act_2,NULL); sigaction(SIGTERM, &act_15,NULL);
//...
}