如何给命名空间添加一个名字?

据我所知,我可以使用“克隆”来创build一个进程和一个名称空间,但是用这种方式创build的名字空间没有名字。 例如,我使用参数CLONE_NEWNS创build一个networking名称空间,但在命令“ip netns list”中,没有命名空间列表,因为创build的名称空间没有名称。 但是我可以使用命令“ip netns add xxx”来创build名称为“xxx”的名称空间。

我想知道如何使用系统调用“clone”来创build名称空间。

创建从/var/run/netns/<name>/proc/<pid>/ns/net的符号链接,其中<pid>是使用CLONE_NEWNS创建的进程的PID, <name>是您想要的名称用于引用网络名称空间。

请注意, ip link set netns命令将接受PID或名称,并且nsenter命令也可以通过PID访问命名空间,所以实际上可能不需要为网络命名空间分配一个名称。