【发布时间】:2021-06-29 09:39:45
【问题描述】:
源代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
if(fork() == 0)
if(fork())
printf("Hello world!!\n");
exit(0);
}
输出:
┌──(kali㉿kali)-[~/桌面/系统]
└─$ ./a.out
世界你好!!
谁能解释一下程序的流程? 我知道 fork() 做了什么,但我无法理解这个源代码。 除了说它只是一个副本之外,任何人都可以分享调用 fork() 时究竟发生了什么。
【问题讨论】:
-
fork调用可以返回两种类型的值:子进程中的0和父进程中的非零值。而在 C 中,0被认为是 false 并且所有非零都是 true。 -
代码应该做什么?如果你想用什么?如果您也不知道,那么我不会担心代码。如果您想学习使用 fork() 查找教程或书籍。 “我知道 fork() 做了什么”和“它只是一个副本”似乎是相互矛盾的陈述。总之,我不明白你的问题的目的。
-
fork()的使用:1) 人为的、令人困惑的学校作业。 2) 用while(fork())杀死*nix 计算机的简单、有趣的方法。 3) ...其他用途? -
fork()将替代现实引入程序。在fork()之后,程序实际上在 2 个并行现实中运行(其中一个 fork() 返回零,另一个 - 非零)。