我想使用 C++ 重新创建 netstat 命令以获取所有事件端口信息(特别是 netstat -f <unix/inet/inet6> -u
)。我已经在 Windows、Linux 和 macOS 上完成了此操作。在我认为与 Solaris 最相似的 Linux 上,我解析了/proc/net/tcp 等以获取此信息。 Solaris 中不存在此文件,我找不到任何类似的文件。我无法弄清楚 Solaris 上的 netstat 究竟在做什么来获取它的信息。
man netstat
在底部说“netstat 实用程序通过打开/dev/tcp 并发出查询从系统中获取 TCP 统计信息”。 /dev/tcp
是一个符号链接(symbolic link) tp devices/pseudo/tcp@0:tcp
而且我不太确定这意味着什么或如何打开和查询它。
Solaris 的 netstat 使用什么函数/头文件/文件?它在幕后做什么?
我已经查找了它的源代码,但除了死链接或重定向到 Oracle 主页的链接之外似乎找不到任何其他内容。此源代码的有效链接将回答我的问题
最佳答案
Solaris /proc/
procfs 有进程信息。没有别的,或者没有别的。 Linux 将其扩展为实际上包括各种系统信息,而不仅仅是进程。
您总是可以通过/dev/tcp
的模糊ioctl()
来获取您的信息。更好的是,您应该能够使用 SMF(服务管理框架)查询某些网络服务的属性以获取您的信息(键入 svcs
以获取服务列表)
关于c++ - 如何使用 C++ 在 Solaris 中获取事件端口信息(重新创建 `netstat command`)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55854483/