ポート所有者はプロセス終了後にnetstatに切り替えます。

ポート所有者はプロセス終了後にnetstatに切り替えます。

2つのプロセス間の接続を確立しました。

netstat -tpn | grep 9999
tcp        0      0 127.0.0.1:*58728*         127.0.0.1:9999          ESTABLISHED 17366/*my_app.bin*

このプロセスを終了した後も
1.接続はまだESTABLISHED生きています
。 2. ポートが58728まだ netstat テーブルにあり、異なるプロセス名があることを確認しました。

tcp        0      0 127.0.0.1:*58728*         127.0.0.1:9999          ESTABLISHED 19645/*udhcpc*

どうやって?

答え1

問題は、udhcpcプロセスが私のプロセスで作成されることですmy_app.bin
このビルドでは、生成されたプロセスが を継承するため、my_app.binソケットを閉じてもmy_app.binで閉じませんudhcpc

解決策:

  1. O_CLOEXECソケットを開くときに使用するか、後で fcntl()フラグと一緒に使用します。FD_CLOEXEC
  2. 生成されたプロセスで、関係のない開いているファイル記述子をすべて閉じます。

私の場合は制御できないので、udhcpcオプション番号を使用する必要があります1

関連情報