3

如何在 Linux 上获取已使用的端口及其状态?基本上,所有netstat可以做的事情,但是在 C 中?

4

2 回答 2

3

在运行 netstat 上运行strace将显示它发出的系统调用及其参数。

$ strace netstat
...
open("/proc/net/tcp6", O_RDONLY)        = 3
open("/proc/net/udp", O_RDONLY)         = 3
...

这通常是找出程序正在做什么或它进行的调用的好方法,如果您只需要找出在手册页上查找哪个调用,这有时比查看源代码更容易。

于 2011-12-22T22:51:06.527 回答
1

好吧,对于“netstat 可以做的一切”,你可以从它netstat本身开始。源代码在这里:

http://net-tools.git.sourceforge.net/git/gitweb.cgi?p=net-tools/net-tools;a=blob;f=netstat.c;h=f046f09162689f258f8920c1c2af27e01cdc77f2;hb=HEAD

需要注意的是,大部分内容都是netstat/proc文件系统中获取的;看起来这些*_do_one例程拥有大部分“有趣”的胆量。

于 2011-12-22T22:43:17.057 回答