この
vfork()関数は と同じ効果がありますが、プロセスが [...]ファミリの関数fork(2)の 1 つを正常に呼び出す前に [...] 他の関数を呼び出した場合の動作は未定義です。exec(3)
exec*()これは、後で任意の関数を呼び出すことvfork()が許容されることを示唆しています。ただし、マニュアルページの後半では、具体的に次のように述べています。
特に、プログラマーは、子 [...] が [...] を呼び出すまで、親がブロックされたままになることに依存できません
execve(2)。
execve(2)は man ページで繰り返し使用されており、その使用法は、 のexec後に受け入れられる唯一のタイプの関数であることを示唆していvfork()ます。
では、なぜ がここで選ばれているのでしょうか。他のタイプの関数 ( など)execveを呼び出しても安全でしょうか?execexeclp