当我执行时,显示的信息route -n
到底是从哪里(从哪个s)检索的?struct
我尝试执行strace route -n
,但没有帮助我找到它存储的正确位置。
答案1
route
或实用ip
程序从名为 的伪文件系统获取信息procfs
。它通常安装在/proc
.有一个名为 的文件/proc/net/route
,您可以在其中查看内核的 IP 路由表。您可以改为打印路由表cat
,但路由实用程序会格式化人类可读的输出,因为 IP 地址以十六进制存储。
该文件不仅仅是一个普通文件。它总是在打开它并尝试读取时生成,就像 proc 文件系统中的所有文件一样。
如果您对该文件的编写方式感兴趣,那么您需要查看内核源代码:功能输出路由表。你看到在2510号线,打印路由表的标题。路由表似乎主要位于fib_info
头文件中定义的结构中ip_fib.h,第 98 行。