/proc/net 文件在 Linux/Unix 中是如何填充的?

/proc/net 文件在 Linux/Unix 中是如何填充的?

我正在为 Linux 开发一个网络监视器,没有数据包嗅探。我打算从/proc/net文件中读取网络统计信息和相关数据。

我知道这/proc是进程文件系统的挂载点,它是反映内核内部数据结构的虚拟文件系统。

我想知道它是如何填充的以及是否可以直接读取操作系统内部结构。

答案1

/proc由内核“实时”填充:目录和文件的内容是在应用程序访问它们时动态构建的。所以你不会找到任何填充它们的实用程序:如果你想知道事情是如何到达那里的,你必须阅读内核代码或者内核文档。在源代码中,条目是由各个部分创建的网络代码。许多条目/proc/net被记录为网络文档

这是读取操作系统内部结构的最低级别。深入了解的唯一方法是编写内核驱动程序。

检索网络相关信息的另一种方法是通过套接字调用ioctlgetsockopt有时这在 C 中更方便。我认为有些信息可以通过一种方法获得,但不能通过另一种方法获得,反之亦然,但我不知道细节。

相关内容