在阅读C源代码时,我看到用于打开连接的socket
函数。当我使用socket
在Linux内核源代码(版本3及更高版本)中搜索grep
的定义时,我可以找到更多调用socket
而不是定义。
socket
在哪里定义?它是否在以太网卡的源代码中定义?
答案 0 :(得分:2)
socket()
函数不是核函数,它是libc
函数。
如果你想学习socket()
内部,请获取glibc
(或标准C库的任何实现)的代码,而不是内核代码。
如果您打算进一步深入研究并研究内核如何实现套接字机制,请查找系统调用sys_socketcall()
。
答案 1 :(得分:0)
我意识到这个线程是古老的,但是实际上我必须去查找这个线程,因为我正在研究一个速度为10Gb / s的安全堆栈,并且需要知道它是如何实现的。我可以在这里找到来源:https://github.com/torvalds/linux/blob/master/net/socket.c