-1

これは vfork() のプログラムです。このプログラムは、複数の親プロセスと子プロセスを作成し、最後に -1 を返します (OS が別のプロセスを作成できないことを意味します)。なぜそのような行動が起こるのですか?

#include<stdio.h>
void main()
{
  int pid;
  pid=vfork();
  printf("pid=%d\n",pid);
  if(pid==0)
  {
    printf("hello\n");
  }
}
4

1 に答える 1

2

(1) これにより、単一の子が作成されます。

(2)子は、またはが呼び出されるvforkまで親とメモリを共有します。どちらにも電話しません。exec_exit

(3) 親の実行は、子がexecまたはを呼び出すまで中断されます_exit

基本的にあなたの例はFUBARです。vfork(最近実際にある場合)のポイントは、すぐに別のプログラムを実行する高速forkなメカニズムを提供することです。execこの必要性は、通常のコピーオンライト動作により大幅に減少しましたfork

于 2014-01-12T19:19:30.990 に答える