免费注册 查看新帖 |

Chinaunix

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

为什么在库中找不到socket函数的代码? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-20 08:46 |只看该作者 |倒序浏览
我在我的代码中使用了这个函数调用:
        sock = socket(PF_INET, SOCK_DGRAM, 0);
后来我在include到的文件中寻找PF_INET和SOCK_DGRAM的定义,然后改为下面的代码,功能仍然正确:
        sock = socket(2, 2, 0);

但是奇怪的是,我找不到socket函数的代码。我只能在sys/socket.h中找到其原型定义。
        extern int socket (int __domain, int __type, int __protocol) __THROW;

请问,这个函数的代码在哪里?为什么找不到?而且既然找不到,为什么还能成功在我的代码中调用?

另外,假如我不写PF_INET和SOCK_DGRAM,而是直接写2,有没有潜在的风险?

谢谢。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2012-05-20 09:20 |只看该作者
1,不用宏代码就会变得不规范。
2,socket 是系统调用,确实没有代码。主体代码在内核里,libc 里面只有一小段 wrapper。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP