私のプログラムは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
ます。