下面是我实验的一段代码,结果产生了,无限的输出。我的推测是子进程从f返回时,f的栈帧出栈,从而当子进程结束时。父进程由于f出栈从而又从新执行了main,从而产生无限输出。求教???????????
#include
#include
void f()
{
if(vfork()<0)
{
perror("fork");
}
}
int
main(int argc,char * argv[])
{
pid_t pid;
pid=getpid();
printf("pid=%d\n",pid);
f();
if(getpid()!=pid)
{
printf("pid=%d\n",getpid());
}
else
{
printf("pid=%d\n",getpid());
}
return 0;
}