【问题标题】:What is the difference between fork() with else and without elsefork() with else 和 without else 有什么区别
【发布时间】:2020-11-04 02:42:17
【问题描述】:
#include <stdio.h>
#include <unistd.h>


int main(){
    if(fork()>0){
        printf("i am p\n");
        fork();
    }    
    else{
        printf("i am c\n");
    }
}

输出是

i am p
i am c

没有别的输出是

i am p
i am c
i am c
i am c

当有 else 和没有 else 时,我无法理解第二个 fork 的作用。

【问题讨论】:

标签: c linux fork


【解决方案1】:

父进程fork一个新进程,由于子进程fork返回值为0,跳过if,打印i am c。父进程将打印i am p 并再次分叉!第二个孩子和父母现在将打印i am c 3 次。如果您保留else,则父级和第二个子级在if 内运行显然不会执行else 块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多