评论说net/if.h
是GNU C库的一部分,而linux/if.h
说它是“LINUX操作系统的TCP/IP协议(protocol)套件的实现”。
但是为什么会有两个,每个都有什么用?
最佳答案
最初,两者都提供数据结构来管理网络接口(interface)。 linux/if.h
与与Linux内核的网络接口(interface)进行交互特别相关。实际上,它在文件的开头这样声明:
/*
* 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.
*/
net/if.h
是glibc出于相同目的的文件,最初更着眼于user space
。需要注意的重要一点是,如果要同时使用两者(它们共享一些结构,但不是全部),则包含顺序非常重要,建议在大多数情况下,在
linux/if.h
之前包含net/if.h
。关于c - linux/if.h和net/if.h有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20082433/