我需要得到一个特定程序正在监听的所有端口号。程序本身是一个通用的服务器类型程序(让我们称之为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/

10-13 08:25