免费注册 查看新帖 |

Chinaunix

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

◎ 关于 alarm 和 socket 求助!!!!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-10-17 15:55 |只看该作者

◎ 关于 alarm 和 socket 求助!!!!!

[quote]原帖由 "zf.sail"]if (setjmp(env_alarm) <0) [/quote 发表:

这句是错的。

论坛徽章:
0
12 [报告]
发表于 2005-10-20 12:55 |只看该作者

◎ 关于 alarm 和 socket 求助!!!!!

if (setjmp(env_alarm) <0)  

这句话根本不会影响到程序的正常的执行。改成 !=0 就行了。

终于找到答案了。函数 sigaction 用于代替老的 signal 函数,程序改用 sigaction 就完全对了。

论坛徽章:
0
13 [报告]
发表于 2005-10-20 12:57 |只看该作者

◎ 关于 alarm 和 socket 求助!!!!!

原来的程序能够在 solaris 下顺利执行。在 Fedora 4 下执行会出现永久等待情况。改用 sigaction 就完全对了

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

◎ 关于 alarm 和 socket 求助!!!!!

//fprintf(stderr, "recvfrom";

>;>;

//fprintf(stderr, "recvfrom\n";

论坛徽章:
0
15 [报告]
发表于 2005-10-20 16:41 |只看该作者

◎ 关于 alarm 和 socket 求助!!!!!

原帖由 "zf.sail" 发表:
if (setjmp(env_alarm) <0)  

这句话根本不会影响到程序的正常的执行。改成 !=0 就行了。

终于找到答案了。函数 sigaction 用于代替老的 signal 函数,程序改用 sigaction 就完全对了。


用signal是没有问题的,关键是你判断<0有问题。下面是longjmp()的一些说明:

After longjmp() is completed, program execution continues as if the corresponding invocation of setjmp() had just returned the value specified by val. The longjmp() function shall not cause setjmp() to return 0; if val is 0, setjmp() shall return 1.

要注意看函数的帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP