评论说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/

10-10 17:52