在下面的程序中控制if(fork()== 0)之后的下一个语句

时间:2017-09-23 10:16:42

标签: c process operating-system fork posix

我试图找出if之后控件的位置(fork()== 0) 在下面的程序中 控制if(fork()== 0)的下一个语句是什么?

#include<stdio.h>
#include <sys/types.h>
#include<unistd.h>
void forkexample() 
{
    // child process because return value zero
    if (fork()==0)
        printf("Hello from Child!\n");

    // parent process because return value non-zero.
    else    
        printf("Hello from Parent!\n"); 
}
int main()
{ 
    forkexample();
    return 0;
}

2 个答案:

答案 0 :(得分:2)

Fork创建另一个进程(称为子进程)并同时运行这两个程序。像Jean写的那样,在子进程中返回0,在父进程中返回!= 0。

然后两个流程分别使用自己的数据运行,控制流程等。此时它可以采用任何一种方式(先是孩子,然后是父,反之亦然)。

ps:我会发表评论,但我不能。

答案 1 :(得分:0)

从fork返回控件位于原始调用点,子节点中返回值为0,父节点中返回值为!= 0。然后这两个过程都有自己的独立生活。一个人将if分支另一个拿走。就是这样。