Chinaunix

标题: 为什么在库中找不到socket函数的代码? [打印本页]

作者: Altkuhl    时间: 2012-05-20 08:46
标题: 为什么在库中找不到socket函数的代码?
我在我的代码中使用了这个函数调用:
        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,有没有潜在的风险?

谢谢。

作者: flw    时间: 2012-05-20 09:20
1,不用宏代码就会变得不规范。
2,socket 是系统调用,确实没有代码。主体代码在内核里,libc 里面只有一小段 wrapper。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2