网站首页
本站精华
免费下载
游客:
注册
|
登录
|
会员
|
搜索
|
帮助
LoveUnix
»
编程开发 & Rational
» 为什么用sigaction,不能反复捕抓信号?
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题:
[已解决]
为什么用sigaction,不能反复捕抓信号?
wanghi
LU新生
UID 33913
精华 0
积分 9
帖子 17
活跃指数 6
LU金币 2025 个
LU金条 0 个
阅读权限 10
注册 2005-8-8
#1
大
中
小
使用道具
发表于 2006-11-10 10:38
资料
个人空间
短消息
加为好友
为什么用sigaction,不能反复捕抓信号?
想反复地捕捉信号。
代码如下:
CODE:
[Copy to clipboard]
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <setjmp.h>
#include <stdio.h>
jmp_buf ebuf;
void new_op(int ,siginfo_t *,void *);
int main(int argc,char**argv)
{
struct sigaction act;
int sig = SIGALRM ;
int n;
setjmp(ebuf);
sigemptyset(&act.sa_mask);
act.sa_flags=SA_SIGINFO;
act.sa_sigaction=new_op;
if(sigaction(sig,&act,NULL) < 0)
{
printf("install sigal error\n");
}
// setjmp(ebuf);
n = alarm(5);
printf("alarm n = %d\n",n);
while(1)
{
sleep(6);
printf("wait for the signal\n");
}
}
void new_op(int signum,siginfo_t *info,void *myact)
{
printf("receive signal %d\n", signum);
//alarm(0);
longjmp(ebuf,2);
}
显示结果:
alarm n = 0
receive signal 14
alarm n = 0
wait for the signal
wait for the signal
wait for the signal
........
[
本帖最后由 wanghi 于 2006-11-10 11:32 编辑
]
wanghi
LU新生
UID 33913
精华 0
积分 9
帖子 17
活跃指数 6
LU金币 2025 个
LU金条 0 个
阅读权限 10
注册 2005-8-8
#2
大
中
小
使用道具
发表于 2006-11-10 11:32
资料
个人空间
短消息
加为好友
用SIGSETJMP和SIGLONGJMP
zjspy
LU新生
UID 904
精华 0
积分 12
帖子 21
活跃指数 0
LU金币 2020 个
LU金条 0 个
阅读权限 10
注册 2003-10-22
#3
大
中
小
使用道具
发表于 2006-11-25 14:54
资料
个人空间
短消息
加为好友
POSIX的singal函数中会把程序未处理的多个相同信号当成一个来处理,只会发起一次信号处理。
投票
交易
悬赏
活动
LoveUnix
专项技术区
> AIX -IBM UNIX
> 其他UNIX & Linux
> i5 (AS400) & IBM大机
> PC Server & HPC
> 存储设备
> 备份软件
> 网络 & 安全
> 编程开发 & Rational
> DB2 & Informix
> ORACLE等数据库
> 中间件技术
行业综合区
> 职业咨询 前程无忧
> 培训认证 行业入门
> 行业应用 项目实施
> 产品信息 商务交流
> Free download下载
交流灌水区
> 蓝色太平洋
> 墨香雅韵
> 论坛建设
> 博客专区
当前时区 GMT+8, 现在时间是 2008-10-7 21:03
乐悠LoveUnix论坛-京ICP备05005823号
Thanks to
Discuz!
© 2001-2007 Power by
LoveUnix.net
Processed in 0.058361 second(s), 6 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
乐悠LoveUnix
-
Archiver
界面风格
----------
Discuz! 5 Default
新DISCUZ风格
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计