在大多数 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
并将tcp
STREAMS 模块推送到它上面,并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