我需要得到一个特定程序正在监听的所有端口号。程序本身是一个通用的服务器类型程序(让我们称之为myserverd
)。myserverd
可以配置为侦听任何TCP端口,并且一台计算机上可以运行多个myserverd
实例。
我可以通过在myserverd
中为grep
运行myserverd
实例来获取正在使用的端口(在netstat -natp
中显示程序名的p
选项)
我试图在procfs(netstat
)中查看此信息,但它不显示任何进程名…我的问题是:是否有一个好的/可靠的api,可以用来以编程方式确定哪些进程在监听某个特定端口(或者获取绑定到所有监听端口的所有进程名)。是吗?
最佳答案
您可以在这里找到netstat的源代码:https://github.com/mirror/busybox/blob/master/networking/netstat.c。如果您仔细查看,您应该会看到netstat如何获取绑定进程的pids/名称。
具体来说,看看prg_cache_load()
函数,因为netstat
只是轮询/proc/net/tcp
。
关于c - netstat进程名称信息以编程方式或通过procfs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14909876/