为什么以太网设备没有出现在“/dev”中?

din*_*elk 7 networking devices ethernet

一般来说,我注意到在 Linux 系统中插入一个新设备会导致一个新条目被列出/dev(假设你有正确的驱动程序)。

例如:

  1. 当你插入一个新的硬盘驱动器时,你会得到/dev/sdb.
  2. 当您插入串行设备时,您会得到/dev/ttyS0.

当我插入以太网设备时,为什么我没有得到类似的信息/dev/eth0

是否有以太网端口的设备列表?

我知道您可以使用 看到端口名称ifconfig,我只是想知道是否也显示了某些内容/dev

Pau*_*aul 9

这是个好问题。原因本质上是历史性的;随着时间的推移,具有不同目标和优先级的不同群体添加了 Unix 的一部分,各种 API 之间的差异反映了这段历史。我认为最初的设备文件概念可以追溯到贝尔实验室,而网络套接字是后来在加州大学伯克利分校添加的。贝尔试图为 AT&T 的运营创建一个很好的干净的可维护范式,而伯克利需要添加不容易融入该范式的互联网功能。从技术上讲,/dev/eth0今天可以返回并创建一个文件(见下文),但这将涉及重写大量的遗留代码。

轻微 OT:如果你对这个主题感兴趣,可以考虑看看 Plan 9,它把“一切都是文件”带到了更大的极端(只是不要指望它有很多现代的、可用的应用程序):

http://www.faqs.org/docs/artu/plan9.html

在 Unix 下通过各种特殊接口(如 BSD 套接字、fcntl(2) 和 ioctl(2))访问的许多设施在计划 9 中通过对类似于设备文件的特殊文件的普通读写操作访问