免费注册 查看新帖 |

Chinaunix

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

accept 什么情况下会返回 0 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-18 19:36 |只看该作者 |倒序浏览
AIX系统,  socket accept 居然有返回 0 的情况。 不知为什么会有这种返回?

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [报告]
发表于 2008-11-18 21:46 |只看该作者

回复 #1 rogergodblessyo 的帖子

Return Value
On success, accept() returns a non-negative integer that is a descriptor for the accepted socket. On error, -1 is returned, and errno is set appropriately.

0也是描述符,没什么奇怪的

论坛徽章:
0
3 [报告]
发表于 2008-11-18 23:00 |只看该作者
0 1 2 不已经是标准输入,标准输出,标准错误了吗?

论坛徽章:
0
4 [报告]
发表于 2008-11-18 23:05 |只看该作者
是的。

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
5 [报告]
发表于 2008-11-18 23:40 |只看该作者

回复 #3 rogergodblessyo 的帖子

确实一般我们都保留描述符0,1,2,即使后台进程,脱离控制终端,也会把0,1,2 dup到/dev/null。
一种可能:你的程序为了充分利用描述符,彻底关闭了0,1,2,那么accept返回0也很正常
另一种可能:你程序有BUG,无意中关闭了描述符0,我曾经见过有些人写网络编程时写类似如下代码:
close(fd);
fd = 0;
似乎想达到释放内存时 free(ptr);ptr = NULL相似的目的,不过显然达不到想要的结果,因为0是合理的描述符值。请看你代码中有没有无意中关闭描述符的地方。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2008-11-19 15:39 |只看该作者
原帖由 rogergodblessyo 于 2008-11-18 23:00 发表
0 1 2 不已经是标准输入,标准输出,标准错误了吗?

这只是一种约定。

论坛徽章:
0
7 [报告]
发表于 2008-11-19 20:33 |只看该作者

精灵进程accept ,0,1,2是否就可用了?

pid=fork();
if(pid< 0)
{
     exit(1);
}
else if( pid !=0)
{

     exit(0);
}

sockfd=accept(....)

此时 sockfd 可能是 0,1, 2 ?

[ 本帖最后由 rogergodblessyo 于 2008-11-19 20:36 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP