TCP连接关闭后,为什么文件描述符仍然存在?

时间:2018-04-04 00:12:39

标签: unix tcp file-descriptor

当我运行lsof时,我看到许多条目TCP <HOST>:<PORT> -> <IP>:https (CLOSED)

这是一个标记,表明描述符曾经存在或打开的文件是否仍然存在?

假设它不是标记,为什么文件描述符仍然存在?

等待几分钟后,CLOSED条目仍显示在输出中。我只看到它们在进程退出时消失。

1 个答案:

答案 0 :(得分:1)

来自lsof的(CLOSED)注释告诉您TCP连接处于关闭状态(已关闭),可能是由于远程端关闭了连接。 lsof列出文件描述符的事实意味着字段描述符仍然是打开的,指的是关闭的TCP连接。没有文件涉及仍然存在,只有套接字的本地端。

文件描述符将持续存在,直到进程关闭它,这可能发生在关闭系统调用时,或者在进程退出时自动发生。

关闭文件描述符并关闭连接只是切线相关。当您关闭文件描述符时,如果它是对连接一端的最后一个引用,那么连接将被关闭(如果它尚未关闭 - 要么另一端被关闭,要么被显式关闭关机系统调用)