免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: netcalf
打印 上一主题 下一主题

alarm系统调用一问! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-07-24 10:37 |只看该作者

alarm系统调用一问!

这都被你看出来啦啊,你没意见吧,呵呵

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
12 [报告]
发表于 2005-07-24 10:38 |只看该作者

alarm系统调用一问!

to luojiannx :
sigaction 是比signal要强。
不过要体现在 设置信号集上面 还有添充sa_sigaction,以及sa_flags 结构上啊.
如果你改变信号集. 还是填sa_handler 结构和sa_flags=0的话.
那么和signal的使用就基本相同了. 没有区别了.

论坛徽章:
0
13 [报告]
发表于 2005-07-24 10:40 |只看该作者

alarm系统调用一问!

嗯,是麻烦点
只是说后来的标准不建议使用signal
signal用了那么多年,当然还是可以用的

论坛徽章:
0
14 [报告]
发表于 2005-07-24 10:49 |只看该作者

alarm系统调用一问!

另外还有一个可重入问题,printf是不可重入函数
最保险的方案还要先在响应函数的开始保存errno,然后退出响应函数的时候还原。
具体的我没什么体会,我没做过应用

论坛徽章:
0
15 [报告]
发表于 2005-07-24 12:11 |只看该作者

alarm系统调用一问!

原帖由 "luojiannx" 发表:

但是为什么退出了呢?
你又没有循环,为什么不退出?
alarm(2)只是在两秒中之后发SIGALRM信号而已
这个程序是你自己写的?谁教的?
书上的?我怎么没看到过?

对不起各位了!我忘记写循环了......实在对不起,太粗心了!!
代码已经改好了.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
16 [报告]
发表于 2005-07-24 12:53 |只看该作者

alarm系统调用一问!

还是先仔细看书吧。
尤其是看 C 语言编程的基础书,
以及程序员应该具备哪些基本素质。
过早地接触 BBS 会害了你自己的。

论坛徽章:
0
17 [报告]
发表于 2005-07-24 13:20 |只看该作者

alarm系统调用一问!

晕,为什么俺问个问题都让去看书?
是这样的:我的服务器程序中fork了一个子进程,用于处理客户的连接,当客户异常退出的时候,子进程会一直在那里等ack,不能退出,这样服务器的负担会越来越大.用这个alarm是为了让子进程超时退出.

  1. main()

  2. {

  3.   int i;
  4.   while(1)
  5.   {
  6.   alarm(1);

  7.   printf("%d\n",i++);

  8.   alarm(0);
  9.   }

  10. }
复制代码

上面的代码是为了测试写的,由于太仓促,忘记写循环,情见谅!
测试环境:RedHat9(在Windows2000下通过ssh登录),程序打印一段时间就收到alarm信号退出了.
原帖由 "flw" 发表:
还是先仔细看书吧。
尤其是看 C 语言编程的基础书,
以及程序员应该具备哪些基本素质。
过早地接触 BBS 会害了你自己的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
18 [报告]
发表于 2005-07-24 13:24 |只看该作者

alarm系统调用一问!

你把alarm(2); 和 alarm(0);写到循环的外面..~~

如果不写外面,每次循环又重新设置了alarm(2)了 永远达不到你的要求.

论坛徽章:
0
19 [报告]
发表于 2005-07-24 13:28 |只看该作者

alarm系统调用一问!

原帖由 "mq110" 发表:
你把alarm(2); 和 alarm(0);写到循环的外面..~~

如果不写外面,每次循环又重新设置了alarm(2)了 永远达不到你的要求.

对阿,重新设置了alarm(2)应该永远不会超时退出啊,但是这个程序运行一段时间(时间绝对大于2秒)会收到alarm信号退出了.
我这个程序是为了测试alarm写的,并不是实际的程序.

将alarm(2)改成alarm(1)它将更快的收到alarm信号!我刚刚做的实验,请您编译一下试试看!

论坛徽章:
0
20 [报告]
发表于 2005-07-24 13:30 |只看该作者

alarm系统调用一问!

我崩溃了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP