我想使用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
是一个sym link tp devices/pseudo/tcp@0:tcp
,我不太确定这意味着什么,或者如何打开和查询它。
Solaris的netstat使用哪些函数/头文件/文件?引擎盖下做了什么?
我已经找到了它的源代码,但似乎找不到除死链接或重定向到Oracle主页的链接之外的任何内容。这个源代码的工作链接将回答我的问题
Solaris /proc/
procfs具有进程信息。没有别的,或者没有别的。 Linux将其扩展为包括各种系统信息,而不仅仅是流程。
你可以随时做ioctl()
的/dev/tcp
,以获取你的信息。更好的是,您应该能够使用SMF(服务管理框架)查询某些网络服务的属性以获取您的信息(键入svcs
以获取服务列表)