0

我需要打开多个 TCP 套接字,对应于在 linux 中编程的每个命名空间。
我想知道分配给这些套接字的fd是否相同或者它们总是系统范围内唯一的?

4

1 回答 1

0

一个给定的进程只能是一个命名空间的成员。文件描述符仅在一个进程的上下文中相关。

如果一个进程创建了多个套接字,则这些文件描述符只有该进程知道,并且对外部进程没有用(除了诊断工具,如/proc/PID/fd)。

如果您在两个不同的命名空间中创建了套接字,那么根据定义,它们是在两个不同的进程中创建的,因此文件描述符不必(也可能不会)是唯一的。

如果您想要全局唯一的东西,您可能会对套接字“inode”感兴趣。您可以在此处阅读有关如何列出这些内容的信息:如何找到 TCP 套接字的 inode?. 我怀疑但尚未验证这些 inode 编号在机器上是唯一的,无论命名空间如何。

于 2016-04-28T06:48:11.747 回答