gpt4 book ai didi

对 fork 函数感到困惑

转载 作者:行者123 更新时间:2023-11-30 18:51:45 27 4
gpt4 key购买 nike

这是我感到困惑的代码。

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

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

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

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

最佳答案

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

(fork) == 0 变为 true 的机会太小,因此 if 语句之后的 block 内的内容将不会被执行。

调用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);
}

关于对 fork 函数感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com