免费注册 查看新帖 |

Chinaunix

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

alarm控制超时? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-03 03:46 |只看该作者 |倒序浏览
别人问过,没有答案,我再问一次,为什么alarm不会结束getchar调用?


  1. signal(SIGALRM,t_out);
  2. alarm(TIMEOUT);
  3.         printf("timeout ==[%d]\n",TIMEOUT);
  4.         getchar()  //此处原来是用的tcp函数 read ,后来为了调试方便改成getchar的
  5.         alarm(0);


  6. 超时函数
  7. void    t_out()
  8. {
  9.     int i;
  10.     printf("run timeout\n");
  11.     return;
  12. }


  13. 现在运行结果:
  14. 设置TIMEOUT=2秒,发现到2秒能转到t_out函数,并输出 "run timeout"
  15. 但是getchar()函数并没有结束,还在处于getchar()状态
  16. 以前记得应该是中断掉这个函数,到alarm(0)位置的啊

复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2008-06-03 07:46 |只看该作者
有些句柄可以自动重启被中断的系统调用的。
man fcntl
man ioctl

论坛徽章:
0
3 [报告]
发表于 2008-06-03 09:32 |只看该作者
原帖由 flw 于 2008-6-3 07:46 发表
有些句柄可以自动重启被中断的系统调用的。
man fcntl
man ioctl


把signal换成sigaction就可以中断了,请老大解释一下?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-06-03 11:12 |只看该作者
原帖由 dxbh 于 2008-6-3 09:32 发表

把signal换成sigaction就可以中断了,请老大解释一下?

继续 man
man signal
man sigaction

论坛徽章:
0
5 [报告]
发表于 2008-06-03 13:54 |只看该作者
原帖由 flw 于 2008-6-3 11:12 发表

继续 man
man signal
man sigaction


去掉SA_RESTART,是这个意思么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP