1、信号处理之忽略
::signal(2, SIG_IGN); // ignore: 忽略
#include <vector>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/wait.h>
void handler(int signo)
{
std::cout << "get a new signal: " << signo << std::endl;
exit(1);
}
int main()
{
// 信号捕捉:
// 1. 默认
// 2. 忽略
// 3. 自定义捕捉
::signal(2, SIG_IGN); // ignore: 忽略
while(true)
{
pause();
}
}
运行结果如下: 显然对二号信号(ctrl+c
) 没有效果了
2、信号处理之默认
::signal(2, SIG_DFL); // default:默认。
#include <vector>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/wait.h>
#include <iostream>
#include <string>
void handler(int signo)
{
std::cout << "get a new signal: " << signo << std::endl;
exit(1);
}
int main()
{
// 信号捕捉:
// 1. 默认
// 2. 忽略
// 3. 自定义捕捉
//::signal(2,SIG IGN);// ignore:忽略:本身就是一种信号捕捉的方法,动作是忽略
::signal(2, SIG_DFL); // default:默认。
while (true)
{
pause();
}
}
这些本质上是宏,而且是被强转后的