Учитывая приведенный ниже код:
int main()
{
int pid;
pid=vfork();
if(pid==0)
printf("child\n");
else
printf("parent\n");
return 0;
}
В случае vfork () адресное пространство, используемое родительским процессом и дочерним процессом, одинаково, поэтому единственная копия переменной pid должна бытьтам.Теперь я не могу понять, как эта переменная pid может иметь два значения, возвращаемые vfork () то есть ноль для дочернего элемента и ненулевое значение для родительского?
В случае fork () адресное пространство также копируется, и в каждом дочернем и родительском объекте есть две копии переменной pid, поэтому я могу понять, что в этом случае две разные копии могут иметь разные значения, возвращаемые fork () , но не могутпонять в случае vfork () , как pid имеет два значения, возвращаемые vfork () ?