別々のpid名前空間から各サブプロセスを作成する方法

別々のpid名前空間から各サブプロセスを作成する方法

使用方法unshare(使用しない方法CLONE_NEWPID flag in child process clone syscall)は、別々のPID名前空間に各サブプロセスを作成します。 PID名前空間で最初の子孫を正常に作成できますが、他のPID名前空間から2番目の子孫を作成する方法がわかりません。

親プロセスの疑似コード

1 unshare CLONE_NEWPID
2 spawn child1
3
4 unshare CLONE_NEWPID
5 spawn child2

child1は別のPID名前空間を入力し、PID 1を取得します。実行が4行に達するとSys(EINVAL)エラーが発生します。

答え1

マニュアルを読むことは、unshare CLONE_NEWPID子プロセスではなく呼び出しプロセスに影響を与えます。これを何度も呼び出すのは重複しているようです。最初の呼び出し以降、すべての子プロセスは新しいpid名前空間にあります。

それらを所定の位置に置くには、電話する別の親が必要ですunshare CLONE_NEWPID

努力する

repeat:
    fork
    if child:
        unshare CLONE_NEWPID
        spawn 

これはすべてテストされておらず、これは私が次に試みるでしょう。私もあなたが使用する必要があることを読んだclone

関連情報