- 论坛徽章:
- 0
|
本帖最后由 for_truth 于 2017-05-10 20:05 编辑
为什么我在内核源码(3.2.88)和glibc(2.25)中都找不到socket函数的定义,甚至连socket函数的声明都找不到,
只在gblic-2.25/include/sys/socket.h中找到如下声明:
extern int __socket (int __domain, int __type,
int __protocol);
在linux-3.28/include/linux/syscalls.h中找到如下声明:
asmlinkage long sys_socketcall(int call, unsigned long __user *args);
两者都和man手册中函数原型不一样:
int socket(int domain, int type, int protocol);
socket.h中,在__socket声明的下方有一句libc_hidden_proto (__socket),
libc_hidden_proto宏定义为:
#ifndef libc_hidden_proto
# define libc_hidden_proto(name)
#endif
这么看的话,这个宏对__socket不会产生什么影响吧,那socket函数原型在哪里声明的呢?socket定义又在哪里呢?
|
|