我正在尝试理解下面这段代码
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
pid_t pid ;
unsigned int i=0;
pid=vfork();
switch(pid)
{
case -1: // some sort of error
puts("fork error");
break;
case 0: // the child process
while(i<100)
{
printf("%d\n", i);
i++;
}
break;
default: //parent
while(i<1000)
{
printf("%d\n", i);
i++;
}
break;
}
// _exit(0);
}请不要告诉我vfork()是不好的,这类事情.I知道它是坏的,但是在这段代码中到底发生了什么导致了这种错误。提前感谢
发布于 2011-10-15 22:45:45
不清楚你想做什么或理解什么,但这里有一段来自the manual的略微编辑过的引文
vfork()函数与
(2)具有相同的效果,不同之处在于行为是未定义的,如果vfork()创建的进程
之前调用任何其他函数
您正在执行1:i++和3 printf("%d\n", i)。无论你期望什么,它都不会起作用。
顺便说一句,vfork还不错。只是棘手,危险,几乎毫无用处,并从SUSv4中删除。
https://stackoverflow.com/questions/7778497
复制相似问题