【发布时间】:2017-06-30 15:59:02
【问题描述】:
在 C 程序中,为了使用套接字,我们需要包括:
#include<sys/socket.h>
我已经搜索了socket.c文件(<sys/socket.h>的实现)但是没有找到(find -iname "socket.c*")
- 在哪里可以找到 Linux 套接字实现?
- 我可以修改此文件并更改此实现吗?
【问题讨论】:
-
套接字实现是 glibc 运行时库的一部分。您需要安装该库的源代码。通常源文件不会安装在系统上,因为它们不是系统运行所必需的。
-
您当然可以更改该文件的实现,当然。要使用结果,您必须重新编译生成的库。但请注意不要破坏您正在运行的系统。因此,只需编译库,但首先不要安装结果。而是将一些程序链接到已编译的库并测试是否按预期工作。您可以通过将程序静态链接到您的库或通过更改调用这些程序的进程的
LD_LIBRARY_PATH环境变量来做到这一点。 -
下载glibc源码后(sudo apt-get install glibc-source)搜索socket.c(/usr/src/glibc)还是找不到socket实现
-
确实,我必须道歉:glibc 库中的套接字 function 只是内核函数的包装,显然是在内核源代码中实现的。很抱歉造成混乱!
-
您希望通过更改 libc 或内核中的实现来实现什么?
标签: linux