在大多数 Linux 发行版上,我能够通过读取 /proc/net/tcp 列出所有 tcp 连接,但这在 Solaris 上不存在,是否有一个文件可以从 Solaris 11 上读取 tcp 连接?
谢谢。
编辑:忘了提到我正在用c编码。
在大多数 Linux 发行版上,我能够通过读取 /proc/net/tcp 列出所有 tcp 连接,但这在 Solaris 上不存在,是否有一个文件可以从 Solaris 11 上读取 tcp 连接?
谢谢。
编辑:忘了提到我正在用c编码。
如果您尝试重写netstat,我建议查看它的源代码:https ://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/cmd-inet/ usr.bin/netstat/netstat.c
重要的部分是mibopen,它打开/dev/arp并将tcpSTREAMS 模块推送到它上面,并mibget实际请求连接信息。代码有点复杂,所以我建议在调试器中单步执行代码以了解它是如何工作的。关键系统调用是open、ioctl、putmsg和getmsg。
如果您只想查看进程打开了哪些套接字,可以检查/proc/PID/fd,如pfiles:https ://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/ptools/ pfiles/pfiles.c
您应该使用netstat -an或pcp