Linux
是否有將執行緒關聯到其網路命名空間的文件?
/proc/
$$ pid $$/ns/net 包含指向具有 PID 的程序的網路命名空間的 inode 的連結$$ pid $$. 執行緒有類似的東西嗎? 我的案例是一個多執行緒應用程序,其中有一個主執行緒和一組工作執行緒。*通用工作者 W 通過呼叫unshare()*創建一個新的網路命名空間 N (這使 W 進入 N),將 veth 對的一端推入 N 並離開它(它使用指向根命名空間的 fd 返回到這樣的命名空間)。由於在 W 返回根名稱空間後 N 中沒有程序,因此 N 在發生這種情況時被銷毀,我不希望這樣。
我想到的解決方案是在文件系統的某處掛載到 N 的連結。這就是 iproute2 netns 所做的:安裝到 /proc/ 的連結
$$ pid $$/ns/網。就我而言,問題是 /proc/$$ pid $$/ns/net 一直引用根命名空間,只有 W 更改命名空間,因此我不能使用它,我需要一個文件/其他指向執行緒命名空間的東西。Linux中有這樣的東西嗎?
有一個文件將執行緒與其網路命名空間相關聯:
/proc/[PID]/task/[TID]/ns/net
其中 TID 是執行緒 ID。這解決了我的問題。