マニュアルページを正しく理解すると、分岐して実行するプロセスのfdテーブルが子プロセスにコピーされ、execveでも保持されます。一方、他のメモリマッピングはexecve後に削除されます。
したがって、プロセスがこれを実行するとき(フォークと実行)、削除するファイル構造を拡張します。
それにもかかわらず、私は大学の教科書で次の質問を見つけました。 「10個のプロセスがファイルを開き、その半分がフォークされ、残りの半分が実行される場合、カーネルにはいくつのファイル構造がありますか?」
正解は10回です。 「子供たちがファイル構造を共有しているからです。」
しかし、実行されたプロセスがファイル構造を破壊するため、5になると思いました。
もしそうなら、これは実行後もファイル構造がカーネルに残るという意味ですか?
ベストアンサー1
開かれたファイル記述子execve
があると仮定するとexecve
、execve
そうでなければカーネルはまだ開いているファイル記述子が何に該当するかを把握できません。