【问题标题】:control to the next statement after if(fork()==0) in the below program [closed]在下面的程序中控制到 if(fork()==0) 之后的下一条语句[关闭]
【发布时间】:2018-03-04 20:17:31
【问题描述】:

我试图弄清楚 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;
}

【问题讨论】:

  • 是的............要么.......两者。
  • 我听不懂你在说什么
  • 你明白 fork() 是做什么的吗?
  • 是的............我......知道
  • 好的,那你就有答案了:)

标签: c process operating-system fork posix


【解决方案1】:

从 fork 返回时,控件位于原始调用点,子级返回值为 0,父级返回值为 !=0。那么这两个过程都有自己独立的生命。一个将采用 if 分支,另一个将采用 else。就是这样。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 除了您回答了一个糟糕的问题之外,您还正确地回答了一个问题,所以我赞成它。如果问题被删除,您是否保留赞成票,或者失去它,是另一回事:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2014-11-25
    相关资源
    最近更新 更多