对信号注册函数signal的理解1
2013-03-06 19:48
288 查看
signal函数的原型是:
void (*signal(int signum, void (*handler)(int)))(int);
参数说明:
signum:指定的信号
其中函数指针handler的取值:
SIG_IGN 忽略该信号
SIG_DFL 采用系统默认方式处理信号
自定义的信号处理函数指针
其中的参数SIG_IGN和SIG_DFL是这样定义的:
执行结果:
void (*signal(int signum, void (*handler)(int)))(int);
参数说明:
signum:指定的信号
其中函数指针handler的取值:
SIG_IGN 忽略该信号
SIG_DFL 采用系统默认方式处理信号
自定义的信号处理函数指针
其中的参数SIG_IGN和SIG_DFL是这样定义的:
#include <stdio.h> #include <signal.h> void fun(int n) //其中参数n的值是该函数所处理的信号的编号 { printf("fun--->%d\n",n); } void fun1(int n) //其中参数n的值是该函数所处理的信号的编号 { printf("fun1--->%d\n",n); } int main(void) { void (*p)(int); printf("start\n"); p = signal(SIGINT, fun); //注册SIGINT的处理方式,由fun处理。返回信号SIGINT的默认处理方式,即0 printf("%d\n",p); //将p按十进制打印 p = signal(SIGINT, fun1); //再次注册信号SIGINT的处理方式,由fun1处理,返回之前的处理方式fun的地址给p printf("fun:%p\n",fun); //打印函数fun的地址 printf("p:%p\n",p);//打印p的值,验证p确实指向的是fun (*p)(8888); //进一步验证p确实指向函数fun while(1) { sleep(1); printf("while\n"); } return 0; }
执行结果:
相关文章推荐
- signal---高级信号注册函数
- [Linux信号]使用signal函数注册信号
- Linux Signal (6): 发送信号的kill和raise 函数
- 程序如何捕捉signal函数参数中指定的信号
- linux 信号注册处理发送signal
- 王保明老师Linux学习笔记---------信号----signal()函数使用实例
- 信号注册函数sigaction
- (进程间通信)IPC 信号(signal)基本函数实现的mysleep(unsined int)
- linux 有关信号的系统调用 signal 等函数
- 信号相关函数(signal,sigaction,sigprocmask, kill,sigqueue信号发送函数,睡眠函数,计时器函数)
- 信号处理函数signal的使用
- 深入理解QT的SIGNAL\SLOT机制(五):信号的发射过程
- QT中信号函数的理解
- Linux信号signal介绍,signal()函数,sigaction()函数
- php脚本关于退出信号的处理 (注册信号函数) 实例
- linux信号之sigaction结构体 signal 函数
- 信号处理signal、sigaction、pause、信号嵌套处理、不可重入函数
- Linux内核-信号之signal处理函数
- Linux信号(二)-- signal()函数
- 关于 Linux 中 signal 函数信号处理的讨论