您的位置:首页 > 产品设计 > UI/UE

捕获SIGUER1和SIGUSR2的简单程序 | 信号处理程序 | signal函数

2012-11-13 12:09 831 查看
//signal函数

// void(*signal(int signo,void (*func)(int)))(int)

//func的值可以是接到信号后调用的函数的地址







#include "apue.h"

static void sig_usr(int);

int main(void){

if(signal(SIGUSR1,sig_usr)==SIG_ERR)

err_sys("can't catch SIGUSR1");

if(signal(SIGUSR2,sig_usr)==SIG_ERR)

err_sys("can't catch SIGUSR2");

for(;;)

pause();//使调用进程在接到一个信号前挂起

}

static void sig_usr(int signo){

if(signo==SIGUSR1)

printf("received SIGUSR1\n");

else if(signo==SIGUSR2)

printf("received SIGUSR2\n");

else

err_dump(received signal %d\n",signo);

}









测试:



$./a.out &

[1] 7216

$kill -USR1 7216

received SIGUSR1

$kill -USR2 7216

received SIGUSR2

$kill 7216

[1]+ Terminated ./a.out
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐