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

通常我注意到在Linux系统中插入新设备会导致在/dev列出新条目(假设您有正确的驱动程序)。

例如:

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

当我插入以太网设备时,为什么我不能得到像/dev/eth0这样的东西?

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

我知道你可以使用ifconfig看到端口名称,我只是想知道是否有东西出现在/dev

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

轻微OT:如果主题感兴趣,请考虑看看Plan 9,它将“一切都是文件”变为更大的极端(只是不要指望它有很多现代的,可用的应用程序):

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

通过各种ad-hoc接口(如BSD套接字,fcntl(2)和ioctl(2)访问Unix下的许多工具都在Plan 9中通过对类似于设备文件的特殊文件的普通读写操作进行访问

你好,现在/ dev目录由udev填充,udev是一个读取/ sys目录的守护进程,并创建这些文件。 如果要使用fdisk和gdisk,则必须使用/ dev中的设备。 并且看到使用的tty和pty。 我认为BSD在/ dev中分配一个以太网接口,您可以在其中进行写入和读取。

不久之前,以太网设备确实出现在/ dev / eth0,/ dev / eth1等等。 仍然有应用程序希望在那里找到它们,但现在感到失望,有时无法使用。 幸运的是没有太多。