免费注册 查看新帖 |

Chinaunix

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

Socket描述符可以是0吗? [复制链接]

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
21 [报告]
发表于 2005-01-04 14:54 |只看该作者

Socket描述符可以是0吗?

原帖由 "albcamus" 发表:
呵呵,原来这样。
我看了一下/proc/self/fd/目录下的文件描述符,除了0、1、2之外,还有一个255也默认打开了,这个是干什么的呢?

不同的机器不尽相同吧,我这里查看是0、1、2、3

论坛徽章:
0
22 [报告]
发表于 2005-01-04 14:58 |只看该作者

Socket描述符可以是0吗?

3这么小,是你自己打开的吧?关键我的是255,肯定不是进程自己打开的呀

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
23 [报告]
发表于 2005-01-04 16:01 |只看该作者

Socket描述符可以是0吗?

[quote]原帖由 "albcamus"]3这么小,是你自己打开的吧?关键我的是255,肯定不是进程自己打开的呀[/quote 发表:

嘿嘿,老兄,小心黑客啊!~~

论坛徽章:
0
24 [报告]
发表于 2005-01-04 16:14 |只看该作者

Socket描述符可以是0吗?

不好意思!!我在shell里看的,那个fd/目录下全都是shell进程的,搞混了:P

写了小程序     
  1. 1 #include <stdio.h>;
  2.       2 #include <dirent.h>;
  3.       3
  4.       4
  5.       5 int main()
  6.       6 {
  7.       7         DIR *dir;
  8.       8         struct dirent *ptr;
  9.       9         dir = opendir("/proc/self/fd");
  10.      10         while((ptr = readdir(dir))!=NULL)
  11.      11                 printf("%s\n",ptr->;d_name);
  12.      12
  13.      13         closedir(dir);
  14.      14         return 0;
  15.      15 }
复制代码


输出也是0,1,2,3。3是什么呢?我没有打开它呀。

论坛徽章:
0
25 [报告]
发表于 2005-01-04 16:58 |只看该作者

Socket描述符可以是0吗?

原帖由 "albcamus" 发表:

输出也是0,1,2,3。3是什么呢?我没有打开它呀。

dir = opendir("/proc/self/fd";

论坛徽章:
0
26 [报告]
发表于 2005-01-04 17:12 |只看该作者

Socket描述符可以是0吗?

明白了,呵呵,谢谢斑竹(原来opendir也占用fd的啊)

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
27 [报告]
发表于 2005-01-05 14:22 |只看该作者

Socket描述符可以是0吗?

不识庐山真面目...

论坛徽章:
0
28 [报告]
发表于 2005-01-05 16:56 |只看该作者

Socket描述符可以是0吗?

这个问题可能在solaris下会出现,我也遇到过类似的情况,修改程序,一定要注意非负整数这个关键的词,也是C标准接口定义的,如果各位使用IPC通信的时候得到的资源也可能ID=0;

论坛徽章:
0
29 [报告]
发表于 2013-09-15 22:56 |只看该作者
在linux高级编程中有一处注释
“因网络中,将0重定向为该socket文件描述符,因此向0写数据相当于向socket写数据”
write(0,buff,sizeof(buff));

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
30 [报告]
发表于 2013-09-16 09:21 |只看该作者
是可以的,只是平时0,1,2这三个fd被标准输入输出出错占用了,你关掉这三个fd后,这三个fd就可以被系统重新使用了,不只是socket,所有的会生成fd的都可能返回0的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP