[C++ 学习] 控制信号
//
// 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可以改变默认行为。