ここで何が起こっているのか少し混乱します。私はguideに続き、CLONE_NEWNSフラグを設定してcloneを呼び出した後に新しいマウントポイントが追加されました。マウントポイントは、子プロセスに対してのみ存在するはずです。私は新しいファイルシステムの名前空間を変更しようとしています。親のものに影響するようです。CLONE_NEWNSでclone()を実行した後mount()でエフェクトを親に設定
私のCプログラムはかなり簡単です。メインはクローンを呼び出す
pid_t pid = clone(child_exec,c_stack, SIGCHLD | CLONE_NEWNS | CLONE_NEWPID ,args);
argsはexecコマンドを含むチャット配列です。
int child_exec(void *arg)
{
int err =0;
char **commands = (char **)arg;
mount("none", "/mytmp", "tmpfs", 0, "");
execvp(commands[0],commands);
return 0;
}
EXECVPに渡されるコマンドは、Iが出力/マウントポイントを、プログラムが出てくるmytmp /見えないために出た後再度コマンドを実行しているmount
mytmp含むように期待するmount
ある場合。それは起こっていない。私はexecvpが呼び出されたときとマウントされた後にそれを見る。
私はMS_PRIVATEフラグでマウントし、unshare(CLONE_FS);
を使用してみましたまた、私は子プロセスからの/ procをアンマウントしようとしたとのgetリソースがビジーエラーで同様の問題がありました。私は新しい名前空間で起こってはならないと思った。
ことになりました。あなたは何かを尋ねるのではなく、起こったことを説明しているだけです。 – immibis
明確ではありませんか?私は親に影響を与えずに新しいファイルシステムの名前空間を操作しようとしています。 – Matthew
あなたがしようとしていることは明らかです。あなたが質問していないので、あなたが何の質問をしているのかははっきりしていません。 – immibis