免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4194 | 回复: 11
打印 上一主题 下一主题

请教关于signal的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-14 09:17 |只看该作者 |倒序浏览
我手头在看一个程序
程序中要实现每隔一段时间就执行一个处理函数
间隔时间在60*60*24秒之内,也就是一天之内,精确到秒
程序中是用alarm加pause实现的

我的问题是,据我所知道的,sleep函数在其内部就是用alarm和pause
实现的,那么在这里如果用sleep似乎也可以,而且明显的会减少工作量
而且结构更清晰。但是我还是对signal不是很了解,以前只是泛泛的看过
一点,请教一下各位高手,在这里使用alarm和pause比较sleep有什么
优点呢,是否可以提供更多的灵活性?还是其他的什么。

论坛徽章:
0
2 [报告]
发表于 2003-02-14 09:22 |只看该作者

请教关于signal的问题

sleep会被阻塞住。程序执行到sleep就会停止等待,sleep下面的代码就不能马上执行。而信号方式则不会

论坛徽章:
0
3 [报告]
发表于 2003-02-14 09:28 |只看该作者

请教关于signal的问题

我看的这个程序是顺序执行的
而且调用pause进程就被挂起了
在alarm产生信号之前也是什么事情都不能做的吧

论坛徽章:
0
4 [报告]
发表于 2003-02-14 09:32 |只看该作者

请教关于signal的问题

你的程序采用什么结构也可能和程序员的喜好有关吧,我刚才说的只是sleep和alarm的区别
tomken 该用户已被删除
5 [报告]
发表于 2003-02-14 09:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2003-02-14 09:50 |只看该作者

请教关于signal的问题

谢谢各位
刚才我说的不够详细,我可以把简化的代码写一下
用signal的

alarm(somesec);
while(1)  pause();

alarmHandler(){
  appFunc();
  alarm(somesec);
}

用sleep的

while(1){
appFunc();
sleep(somesec);
}

论坛徽章:
0
7 [报告]
发表于 2003-02-14 12:55 |只看该作者

请教关于signal的问题

不同的地方是
一个是在信号处理程序中运行

这样一收到alarm信号就会执行
其它信号不执行
你可以向它发alram信号使它执行

另一个sleep在收到其它信号时也会醒过来

论坛徽章:
0
8 [报告]
发表于 2003-02-14 13:04 |只看该作者

请教关于signal的问题

哦!
我知道了,thx
那如果在sleep前把我不需要的信号都屏蔽掉
能不能做到用sleep来实现而不出问题呢
再谢:)

论坛徽章:
0
9 [报告]
发表于 2003-02-14 14:03 |只看该作者

请教关于signal的问题

sighandler_t signal (int signum, sighandler_t action)
The signal function establishes action as the action for the signal signum.  

The second argument, action, specifies the action to use for the signal signum. This can be one of the following:

SIG_DFL
SIG_DFL specifies the default action for the particular signal. The default actions for various kinds of signals are stated in Standard Signals.

SIG_IGN
SIG_IGN specifies that the signal should be ignored.

比如忽略SIGCHLD信号
  signal(SIGCHLD, SIG_IGN);

论坛徽章:
0
10 [报告]
发表于 2003-02-14 15:22 |只看该作者

请教关于signal的问题

有一些信号不应该屏蔽掉
因为这些信号是程序出错的提示
如内存访问越界

所以屏蔽不是最好的办法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP