端口所有者在终止进程后切换到 netstat

端口所有者在终止进程后切换到 netstat

我在两个进程之间建立了连接:

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,所以我需要使用选项 number 1

相关内容