今日のLinux カーネルの名前空間にはいくつかの問題があります。具体的には、一意の PID 名前空間内の PID をグローバル PID 名前空間内のPID に関連付けることです。
次のいずれかを実行できる必要があります。
a)名前空間によって割り当てられた PID を使用して、グローバル スコープからプロセスを強制終了します
また
b)名前空間固有の PID をグローバル PID に変換して、グローバル スコープから PID を削除できるようにする
また
c) PID 名前空間内のプロセスがグローバル PID を報告できるようにします。これにより、グローバル スコープから PID を強制終了できます。
名前空間シナリオで PID 情報を含むプロセス構造については、ここでいくつかの議論があります。ユーザーランドアプリケーションからこれらの構造にアクセスできるかどうか、またはカーネルハックを介してサポートを追加する必要があるかどうかはわかりません。
なんで? 現在ネットワーク名前空間を使用しているアプリケーションがあります。PID 名前空間のサポートを追加しています。現在の仕組みは次のとおりです。
PID 名前空間の導入前: メイン アプリケーションは現在、別のネットワーク名前空間で bash コンソールを起動します。次に、その bash コンソールを使用してプログラムを開始し、それらのプログラムに現在の PID を報告させます。メイン アプリケーションがそのネットワーク名前空間内のサブプロセスを強制終了したい場合は、報告された PID を強制終了するよう OS に指示するだけです。
PID 名前空間あり (壊れた状態): メイン アプリケーションは現在、別のネットワークと PID 名前空間で bash コンソールを起動します。次に、その bash コンソールを使用してプログラムを開始し、それらのプログラムに現在の PID を報告させます。ただし、報告された現在の PID は、グローバル PID 名前空間では有効ではありません (グローバル名前空間の PID が 56000 の場合、10 になる可能性があります)。その結果、メイン アプリケーションは、そのネットワーク + PID 名前空間でサブプロセスを強制終了できません。
いつものように、どんな指導も大歓迎です