首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

vfork函数有关问题

2012-04-20 
vfork函数问题C/C++ code#include stdio.h#include sys/types.h#include unistd.h//为什么最后一个e

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不会执行。

热点排行