为什么 lsof 对不同的进程显示相同的文件描述符?

为什么 lsof 对不同的进程显示相同的文件描述符?
lsof -i :80
COMMAND     PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
gnome-pan 28597 murat   18u  IPv4 2907888      0t0  TCP ....
gnome-pan 28597 murat   19u  IPv4 2907903      0t0  TCP ....
dropbox   28624 murat   18u  IPv4 2755213      0t0  TCP ...

当我使用 -i 开关列出打开的文件时,我发现一些进程具有相同的 fd。例如上面的输出,28597 和 28624 pid 具有相同的 fd。这意味着这些进程可以访问相同的内存空间。这是什么原因造成的?它们如何到达同一区域以及为什么?此外,u(18u)是什么意思?一些 fd 以 w 结尾。

答案1

这意味着这些进程可以到达相同的内存空间。

为什么它们是否想达到共同的记忆空间?答案很简单——互相交谈!

在您的情况下,dropbox正在与 对话gnome-panel,它提供了 Dropbox 状态图标。

手动的有话要说:

复制文件描述符的主要用途是实现重定向输入或输出:即改变特定文件描述符对应的文件或管道。

u标志只是表示FD是可读写的;w表示只写,r表示只读。

答案2

文件描述符在每个进程的命名空间中定义。它们对于整个系统来说并不是唯一的。显示的两个进程没有访问同一个文件,这一点可以从列中看出,DEVICE在本例中,该列可能显示了 TCP 套接字的设备名称。

相关内容