/proc/[pid]/ns/net 包含指向具有 PID [pid] 的进程的网络命名空间的 inode 的链接。线程有类似的东西吗?
我的用例是一个多线程应用程序,其中有一个主线程和一组工作线程。通用工作者 W 通过调用unshare()创建一个新的网络命名空间 N (这使得 W 进入 N),将 veth 对的一端推入 N 并离开它(它使用指向根命名空间的 fd 返回到这样的命名空间)。由于在 W 返回根名称空间后 N 中没有进程,因此 N 在发生这种情况时被销毁,我不希望这样。
我想到的解决方案是在文件系统的某处挂载到 N 的链接。这就是 iproute2 netns 所做的:安装到 /proc/[pid]/ns/net 的链接。就我而言,问题是 /proc/[pid]/ns/net 一直在引用根命名空间,只有 W 更改了命名空间,因此我无法使用它,我需要一个文件/其他指向 a 的命名空间的东西线。Linux中有这样的东西吗?
有一个文件将线程与其网络命名空间相关联:
其中 TID 是线程 ID。这解决了我的问题。