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

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

[code="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();

 }

}


# ./apue &

[1] 6893

# kill -USR1 6893

recv SIGUSR1

# kill -USR2 6893

recv SIGUSR2

# kill 6893

[1]+ 已终止 ./apue


[/code]