Linux
如何在單獨的 pid 命名空間中生成每個子程序
如何使用
unshare
(不使用CLONE_NEWPID flag in child process clone syscall
)在單獨的 PID 命名空間中生成每個子項。我能夠在 PID 命名空間中成功生成第一個孩子,但我不確定如何在另一個 PID 命名空間中生成第二個孩子。父程序的虛擬碼
1 unshare CLONE_NEWPID 2 spawn child1 3 4 unshare CLONE_NEWPID 5 spawn child2
這裡 child1 進入單獨的 PID 命名空間並獲得 PID 為 1。當執行到達第 4 行時,它拋出
Sys(EINVAL)
錯誤。
通過閱讀手冊
unshare CLONE_NEWPID
,它作用於呼叫過程,而不是孩子。多次呼叫它似乎是多餘的。第一次呼叫後,所有孩子都在一個新的 pid 命名空間中。要將它們放在自己的位置,您需要另一個父級來呼叫
unshare CLONE_NEWPID
.嘗試
repeat: fork if child: unshare CLONE_NEWPID spawn
這一切都未經測試,這正是我接下來要嘗試的。我也在閱讀您需要使用
clone
.