ベストアンサー1
の目的は、子プロセスでvfork
のみ を実行する場合に、プロセス イメージ全体をコピーするオーバーヘッドを排除することですexec*
。 は子プロセスのイメージ全体を置き換えるためexec*
、親プロセスのイメージをコピーしても意味がありません。
if ((pid = vfork()) == 0) {
execl(..., NULL); /* after a successful execl the parent should be resumed */
_exit(127); /* terminate the child in case execl fails */
}
その他の用途では、vfork
危険であり予測不可能です。
しかし、Linux を含む現在のカーネルのほとんどでは、 の実装vfork
方法が原因で の主な利点が失われていますfork
。 の実行時にイメージ全体をコピーするのではなくfork
、コピーオンライト技術が使用されます。