信 号

信号就是软件中断,它提供了一种处理异步事件的方法,例如,终端用户键入中断键,则会通过信号机制停止一个程序,或及早终止管道中的下一个程序.

信号以SIG开头,SIGABRT是夭折信号,当进程调用abort函数时产生这种信号.SIGALRM是闹钟信号,当由alarm函数设置的计时器超时后产生此信号.SIGINT:用户DELETE或Ctrl+C

#include <signal.h>
#include <iostream>
#include <unistd.h>
using namespace std;

static void testSig(int sigNo)
{
    if(sigNo==SIGUSR1){
        cout << "recv SIGUSR1" << endl;
    }else if(sigNo==SIGUSR2){
        cout << "recv SIGUSR2" << endl;
    }else{
        cout << "recv unknown sig:" << sigNo << endl;
    }
}

int main()
{
    if(signal(SIGUSR1,testSig)==SIG_ERR){
        cout << "can't catch SIGUSR1" << endl;
    }
    if(signal(SIGUSR2,testSig)==SIG_ERR){
        cout << "can't catch SIGUSR2" << endl;
    }
    for(;;){
        pause();
    }
}

[root@bogon apue_debug]# ./apue &
[1] 6893
[root@bogon apue_debug]# kill -USR1 6893
recv SIGUSR1
[root@bogon apue_debug]# kill -USR2 6893
recv SIGUSR2
[root@bogon apue_debug]# kill 6893
[1]+  已终止               ./apue

猜你喜欢

转载自xiangjie88.iteye.com/blog/2110647