//
// Created by ubuntu on 9/6/23.
//
#include<iostream>
#include<unistd.h>
#include <signal.h>
using namespace std;
void EXIT(int sig){
cout << "收到了信号:" << sig << endl;
cout << "正在释放资源" << endl;
cout << "释放资源完成,程序将退出" << endl;
cout << "程序退出!" << endl;
exit(0);
}
int main(int argc, char *argv[]) {
for (int i = 0; i < 64; ++i) {
//设置成默认忽略信号,防止进程被误杀或者其它干扰
signal(i, SIG_IGN);
}
// 若收到了 2 ctl+c 或15 (kill, killall)则退出
signal(2,EXIT);
signal(15,EXIT);
while(true){
cout << "程序执行中..." << endl;
sleep(1);
}
return 0;
}
signal在头文件 singnal.h 中,可以用man 来查看。
这里用到了回调, killall -2 进程名 或者进程号 就可以做到 进程间的信号传递。
默认行为, 用singnal可以改变默认行为。