繁体   English   中英

对fork函数感到困惑

[英]Confused about fork function

这是我很困惑的代码。

#include "csapp.h"
void doit()
{
    if ((fork) == 0) {
            fork();
            printf("hello\n");
            return;
    }
    return;
}

int main()
{
    doit();
    printf("hello\n");
    exit(0);
 }

我在MAC上运行此程序,只打了一个问候。我认为应该有5行“ hello”,因为子进程返回其父级并每行打印一个“ hello”。

有人可以给我答案吗? 非常感谢!!

您没有调用fork() ,只是将它的地址与0进行了比较,这是一个空指针常量。

(fork) == 0很少有机会成为true,因此if语句之后的块内内容将不会执行。

调用fork()创建一个子进程。

尝试这个:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void doit(void)
{
    if (fork() == 0) {
        fork();
        printf("hello\n");
        return;
    }
    return;
}

int main(void)
{
    doit();
    printf("hello\n");
    exit(0);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM