2013-02-16 70 views
1

我有一个要求获取特定程序正在监听的所有端口号。该程序本身是一个通用的服务器类型程序(我们称之为myserverd)。 myserverd可以配置为在任何TCP端口上侦听,并且在机器上可以运行多个myserverd实例。以编程方式或从procfs获取netstat进程名信息

我可以得到正在使用的端口由grep运行myserverd实例“中netstat -natp荷兰国际集团为myserverdp选项,以显示在netstat程序名)

我想看到的procfs该信息(/proc/net/tcp ),但它不显示任何进程名称......我的问题是:是否有一个好的/可靠的API,可以用来编程地找出哪些进程正在监听某个特定的端口(或者让所有进程名称绑定到所有监听端口)...?

+0

http://source.winehq.org/source/dlls/iphlpapi/iphlpapi_main.c#L1842 – Abhineet 2013-02-16 12:02:59

+0

谢谢,但我正在寻找一个* nix/posix解决方案(因此我的'linux'标签) – 2013-02-16 12:10:58

回答

0

你可以在这里找到netstat的源代码:https://github.com/mirror/busybox/blob/master/networking/netstat.c。如果你仔细看看它,你应该看看netstat如何获得绑定进程的pid /名称。

具体来说,看看prg_cache_load()函数,因为netstat只是民意调查/proc/net/tcp无论如何。

+0

此链接是死。 – 2016-02-23 22:34:18

+0

我已经更新了主busybox项目的镜像链接,该链接(希望)不应该停止。 – cyphar 2016-02-26 15:41:13

相关问题