vfork函数问题
- C/C++ code
#include <stdio.h>#include <sys/types.h>#include <unistd.h>//为什么最后一个else还会执行int global=4;int main(){ pid_t pid; int vari=5; if((pid=vfork())<0) { printf("1:current pid is %d\n",getpid()); printf("vfork error.\n"); return 1; } else if(pid==0) { global++; vari--; printf("Child changed the vari and global \n"); _exit(0); } else{ printf("Parent didn't changed the vari and global\n"); } printf("global =%d ,vari=%d \n",global,vari); return 0;}这里最后一个else为什么总是会执行?
先谢谢各位了
[解决办法]
两个进程执行的,没错啊。
pid==0//子进程
pid>0//父进程
[解决办法]
vfork和fork函数都返回两次,但是vfork不会把主进程的堆栈空间复制,而是和主进程共享一个空间,所以你应该是记错了,并不是说vfork后面的else不会执行。