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