unix下最简单的信号处理函数是signal函数:
1 2 | #include <signal .h> void (*signal(int signo,void (*func)(int)))(int); |
sign参数是信号名,func是信号处理程序。
为了简化signal函数的书写,我们通常用typedef:
1 2 | typedef void signfunc(int); signfunc signal(int,signfunc *); |
下面的程序捕捉两个用户自定义的信号进行处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include |
进行编译链接运行:
1 2 3 4 5 6 7 | $ cc s.c $ ./a.out & #后台运行 [1] 4749 $ kill -USR1 4749 #发送用户自定义信号 $ received SIGUSR1 $ kill -USR2 4749 #发送用户自定义信号 $ received SIGUSR2 |