1

特定のプログラムがリッスンしているすべてのポート番号を取得する必要があります。プログラム自体は、一般的なサーバー タイプのプログラムです (これを と呼びましょうmyserverd)。myserverd任意の TCP ポートでリッスンするように構成できmyserverd、マシン上で複数のインスタンスが実行されている可能性があります。

のインスタンスを実行することで使用されているポートを取得できますmyserverdfor grepin myserverdnetstat -natpプログラムp名を表示するオプションnetstat

この情報を procfs ( /proc/net/tcp) で確認しようとしていますが、プロセス名が表示されません... 私の質問は、どのプロセスが特定のポートをリッスンしているかをプログラムで把握するために使用できる、優れた信頼性の高い API はありますか? (または、すべてのリッスン ポートにバインドされたすべてのプロセス名を取得します)... ?

4

1 に答える 1

0

netstat のソース コードはhttps://github.com/mirror/busybox/blob/master/networking/netstat.cにあります。よく見ると、netstat がバインドされたプロセスの pid/name を取得する方法がわかるはずです。

具体的には、とにかくポーリングするだけなので、prg_cache_load()関数を見てください。netstat/proc/net/tcp

于 2013-02-16T12:30:31.483 に答える