開いているソケットの詳細を探す

開いているソケットの詳細を探す

私のプログラムはTCPソケットを開いたままにしてその理由を追跡しようとしています(私はさまざまなソケットを使用しています)。 lsof コマンドは以下を表示します。

myprog  258981 root   56u     sock                0,8      0t0 2429743 protocol: TCP
myprog  258981 root   57u     sock                0,8      0t0 2430142 protocol: TCP
myprog  258981 root   58u     sock                0,8      0t0 2430553 protocol: TCP
myprog  258981 root   59u     sock                0,8      0t0 2430975 protocol: TCP
myprog  258981 root   60u     sock                0,8      0t0 2431371 protocol: TCP
myprog  258981 root   61u     sock                0,8      0t0 2431775 protocol: TCP

だから私は考えるこれは、最後のTCPソケットがノード2431775で開かれたことを意味します。だから、そのソケットに関するより多くの情報を見つけようとしています。

ソケット(宛先アドレスとポート)に関する詳細情報をどのように見つけることができますか?

ベストアンサー1

TCPソケットにはinode番号がありません(Plan9にはあります)。ファイルシステムのどこにも「マッピング」されません。これをUNIXドメインソケットと混同する可能性があります。

情報から何が見つかると期待しているのかは不明です。何が起こっているのかは、プログラムがソケットを生成し、それを適切に処理しないことです。さらに、処理してもTCPステートマシンは、たとえば未解決のACKを待っている可能性があります(ユーザーが実行するタスクと実行中のタスクによって異なります)。機械構成方法を実行します)。したがって、コード内でソケットが生成された場所を見てください。混乱したらいつこのようなことが起こると役に立ちstraceます。

おすすめ記事