评论说这net/if.h是GNU C库的一部分,并称linux/if.h它是"LINUX操作系统的TCP/IP协议套件的实现".
但为什么有两个,每一个有什么用?
最初,两者都提供数据结构来管理网络接口.linux/if.h特别是与Linux内核的网络接口交互更相关.实际上,它在文件的开头就是这样说的:
/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
* interface as the means of communication with the user level.
*
* Global definitions for the INET interface module.
*/
Run Code Online (Sandbox Code Playgroud)
net/if.h是glibc的文件用于相同的目的,最初更user space专注.
重要的是要注意,如果你要同时使用它们(它们共享一些结构但不是全部),则包含顺序非常重要,建议在大多数情况下包括linux/if.h之前net/if.h.
linux/if.h是内核的一部分(或者从内核导入到 libc 中),并且net/if.h是 C 库的一部分。
因此,这net/if.h就是您的进程可以看到的内容,也是linux/if.h内核想要的内容。内核内部(看不到 libc)包括内核头文件。net/if.h是您的核心网络工具所包含的内容。:-)
很久以前,两者之间就存在不兼容的问题。这导致 fe 无法使用 ifconfig 等工具。目前(大约 10-15 年以来)它们集成良好且向后兼容。
| 归档时间: |
|
| 查看次数: |
4996 次 |
| 最近记录: |