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