捕获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
// 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
相关文章推荐
- Linux程序退出时的信号捕获及处理
- Linux下信号处理与多线程程序
- 第5章 脚本控制------------------------(处理信号、常用信号、捕获信号、移除捕获)
- sigsuspend 用于等待信号处理程序设置全局变量
- 高级教程- 用C++写一个信号处理的程序
- java例程练习(简单的画图程序[鼠标事件处理])
- Linux下,使用C/C++编写的一个简单的信号处理例程
- 简单的学生信息处理程序实现
- Linux signals(一)理论、C语言捕获信号并处理
- WPF 程序 处理未捕获异常,和程序莫名终止说拜拜
- 一个简单的四则运算程序C语言实现--无法处理括号
- 卡尔曼滤波算法与应用和MATLAB程序详解视频实时技术信号处理
- Android_程序未处理异常的捕获与处理
- 体面地处理程序的未捕获异常
- 示范如何在命令行程序中处理用户中断信号(ctrl+c)
- 【数字图像处理】一个简单的BMP灰度处理程序
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- apue程序清单10_6中信号处理程序提早终止的问题
- linux后端服务程序之信号处理
- AppDomain的两个小技巧(程序运行完毕和未处理异常的处理) 捕获未处理异常