signal 可以自定义进程在接收到指定信号后,会执行的函数
sigaction 除了可以做signal 可以做的功能,还可以通过sigaction这个结构体了解信号的更多具体信息
void sigcb(int sig)
{std::cout << " get a sig: " << sig << std::endl;
}int main()
{// sigset_t lnew,lold;// struct sigaction act;// act.sa_handler = sigcb;  //信号处理函数handler// sigemptyset(&act.sa_mask);// act.sa_flags = 0;// sigaction(2, &act, 0);  //准备捕捉SIGINT信号// sigemptyset(&lnew);// sigaddset(&lnew, 2);// sigprocmask(SIG_BLOCK, &lnew, &lold);  //将SIGINT信号阻塞,同时保存当前信号集// std::cout << "Blocked because of 2" << std::endl;// sigprocmask(SIG_SETMASK, &lold, NULL);  //取消阻塞// pause();// sigaction(40, &act, 0);  //准备捕捉40号信号// sigemptyset(&lnew);// sigaddset(&lnew, 40);// sigprocmask(SIG_BLOCK, &lnew, &lold);  //将40号信号阻塞,同时保存当前信号集// std::cout << "Blocked because of 40" << std::endl;// sigprocmask(SIG_SETMASK, &lold, NULL);  //取消阻塞// pause();while (i--){kill(getpid(), 40);kill(getpid(), 2);// sleep(1);}// while (j--)// {//     kill(getpid(), 40);//     // sleep(1);// }}// int main()
// {
//     struct sigaction act, oact;
//     act.sa_handler = sigcb;
//     sigemptyset(&act.sa_mask);
//     act.sa_flags = 0;
//     sigaction(SIGFPE, &act, &oact);
//     int a = 10;
//     a /= 0;
//     return 0;
// }// int main()
// {
//     signal(SIGFPE, sigcb);
//     int a = 10;
//     a /= 0;
//     return 0;
// }