你的位置:首页 > 软件开发 > 操作系统 > 信号处理程序(signal handler)会被重置的函数

信号处理程序(signal handler)会被重置的函数

发布时间:2015-04-19 20:00:18
首先说明我的系统,CentOS 6.6,内核为2.6.32-504.12.2.el6.i686。  当用signal对某个信号设定信号处理函数的时候,有些信号的处理函数会被重置,有些则不会,这种情况的具体说明我还没有找到,这里我就先列一下我找到的几个信号。   信号处理程序会 ...

信号处理程序(signal handler)会被重置的函数

  首先说明我的系统,CentOS 6.6,内核为2.6.32-504.12.2.el6.i686。

  当用signal对某个信号设定信号处理函数的时候,有些信号的处理函数会被重置,有些则不会,这种情况的具体说明我还没有找到,这里我就先列一下我找到的几个信号。

 

  信号处理程序会被重置的信号:

  1. SIGALRM

    比如下面这段代码,这段代码的作用就是给自己发送SIGALRM信号,直到发送了NUM次。

 1 #include <errno.h> 2 #include <pwd.h> 3 #include <signal.h> 4 #include <string.h> 5 #include <stdlib.h> 6 #include <stdarg.h> 7 #include <stdio.h> 8 #include <sys/types.h> 9 #include <unistd.h>10 11 #define BUFSIZE 51212 #define NUM 513 14 /*15  * 这三个函数是我自定义的,功能就是利用strerror打印errno的信息,并且退出16 */17 void err_exit(char *fmt,...);18 int err_dump(char *fmt,...);19 int err_ret(char *fmt,...);20 21 int alrm_count = 0;  //对发送的alrm信号进行计数22 /*23  * 本函数用来处理SIGALRM信号24 */25 void sig_alrm(int signo)26 {27   alrm_count++;28   printf("In signal SIGALRM handler\n");29   if(SIG_ERR == signal(SIGALRM,sig_alrm))30     err_exit("[signal]: ");31   if(alrm_count < NUM) {32     alarm(1);33     pause();34   }35 }36 37 int main(int argc,char *argv[])38 {39   if(SIG_ERR == signal(SIGALRM,sig_alrm))40     err_exit("[signal]: ");41 42   /*alarm函数的功能就是在1s之后向本进程发送一个SIGALRM信号*/43   alarm(1);44   pause();45 46   return 0;47 }

原标题:信号处理程序(signal handler)会被重置的函数

关键词:函数

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。