2013-02-16 105 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

相關問題