C 这个fork()代码如何创建五个进程?

C 这个fork()代码如何创建五个进程?,c,unix,operating-system,C,Unix,Operating System,//如何将打印叉打印5次而不是8次?因为和操作员。请记住,一旦遇到错误,操作员将立即终止。fork将为父级或子级(忘记)返回0(false),它将终止跳过其他2个fork的布尔表达式,这就是为什么由于短路,您将只打印fork 5次而不是8次 如果我重写这个: main() { fork() && fork() || fork(); printf("forked\n"); return 0; } 在firstfo

//如何将打印叉打印5次而不是8次?

因为和操作员。请记住,一旦遇到错误,操作员将立即终止。fork将为父级或子级(忘记)返回0(false),它将终止跳过其他2个fork的布尔表达式,这就是为什么由于短路,您将只打印fork 5次而不是8次

如果我重写这个:

 main()
    {
        fork() && fork() || fork();

        printf("forked\n");
        return 0;
    }
在first
fork
之后,您将有一个进程直接进入else分支,另一个进程将继续。进入else循环的那个将只分叉一次(右分支)。进入内在的一个将会分叉一次,它的孩子将会再次分叉

main()
{
    // fork() && fork() || fork();

    if (fork()) {
        if (!fork()) {
            fork();
        }
    } else {
        fork();
    }

    printf("forked\n");
    return 0;
}

另一个问题是,为什么对一个重复的问题投3票,这个问题以前已经问过很多次了?
  f
/   \
f   f
|
f