signal.h 中 signal 和 raise的用法

来源:互联网 发布:三维模型矩阵旋转源码 编辑:程序博客网 时间:2024/06/06 08:31
C标准库中使用signal.h来处理和模拟异常和按键按下的信号
#include <signal.h>
1.signal:
函数声明:void (*signal(int sig, void (*handler)(int)))(int); 用来确定当信号sig出现时,程序的处理方法.
  handler有三种可能:
  a.为函数,当sig出现时,执行handler函数,并结束该对信号的处理方法
      void sigproc(int n,int b){                    signal(SIGINT, sigproc); /*  */       printf( "ctrl-c \n" );        //signal(SIGINT, SIG_DFL);}int main(){        //signal(SIGINT, sigproc);        if(signal(SIGINT, sigproc) == SIG_ERR)       {              printf( "catch error\n" );       }        //raise(SIGINT);        for(;;);        return 0;}
b.为SIG_DFL, 恢复信号处理的缺省行为
 c.为SIG_IGN, 忽略该信号,比如signal(SIGINT,SIG_IGN), 用户按下ctrl-c,将不做任何处理

2.raise :
   函数声明:int raise(int sig); 强制发送一个信号,比如模拟用户按下ctrl-c
   raise(SIGINT);




0 0
原创粉丝点击