如何将名称添加到命名空间?

How to add a name to namespace?

据我所知,我可以使用"clone"创建进程和命名空间,但是这样创建的命名空间没有名字。比如我创建了一个网络命名空间,参数为:CLONE_NEWNS,但是在命令"ip netns list"中,并没有命名空间列表,因为创建的命名空间没有名字。但是我可以使用命令 "ip netns add xxx" 来创建名称为 "xxx" 的命名空间。

我想知道如何使用系统调用 "clone" 创建名称空间。

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

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