#include<stdio.h>
#include<sys/types.h>
int main()
{
pid_t pid;
if((pid=vfork())<0)
{
perror("FORK ERROR");
exit(1);
}
if(pid==0)
{
printf("[CHILD] child id : %d\n" , pid);
_exit(1);
}
else
{
printf("[PARENT] process id : %d\n" , pid);
exit(1);
}
}
上記のプログラムは、vforkを使用してプロセスを作成します。したがって、アドレス空間は親と子の間で共有されます。これは、pid変数のコピーが1つしかないことを意味します。しかし、子のpid変数を出力すると、0になります。親の同じpid変数は、子のプロセスIDを示します。pid変数のコピーが1つしかない場合、これはどのように可能になりますか。