vfork () системный вызов

Я читал, что новый процесс, созданный с помощью системного вызова vfork (), выполняется как поток в адресном пространстве родительского объекта, и пока дочерний поток не вызовет системный вызов exit () или exec (), родительский поток заблокирован. Итак, я написал программу, используя системный вызов vfork ()

#include <stdio.h>  
#include <unistd.h>

int main()  
 {  
      pid_t pid;  
      printf("Parent\n");  
      pid = vfork();  
      if(pid==0)  
      {  
          printf("Child\n");  
      }  
      return 0;  
  }

, и получил следующий результат:

 Parent  
 Child  
 Parent  
 Child  
 Parent  
 Child  
 ....  
 ....  
 ....

Я предполагал, что оператор return должен вызывать системный вызов exit () изнутри, поэтому я ожидал, что результат будет только

Parent  
Child

Может кто-нибудь объяснить мне, почему на самом деле он не останавливается и непрерывно печатает бесконечный цикл.

5
задан Mat 25 October 2011 в 13:21
поделиться