#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid;
pid = fork(); // #1
if (pid == 0) {
if(fork() > 0) // #2
fork(); // #3
} else
fork(); // #4
return 0;
}
我真的对#4感到困惑,因为我不知道程序是否会运行这个else语句。 你们知道最后的进程总数是多少吗?
在这里,还有另一个程序。那么,那么进程的总数是多少呢?谢谢!
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main() {
for ( int i = 0; i < 10; i++)
if (fork()) {
fork();
fork();
} else
fork();
return 0;
}
答案 0 :(得分:0)
您应该在fork(2)手册页中找到所需内容,特别是
成功时,子进程的PID在父进程中返回, 在孩子身上返回0。
在fork
调用时,我们有一个进程在进行调用,但有两个进程返回:父进程和(新)子进程。他们将 执行 fork 之后的所有代码。
该过程将根据返回值知道它是孩子还是父母(并且可以区分其行动)。
知道在C中,所有非零值都是真的,可以知道在else情况下是否以及谁执行#4:它将是孩子,实际上是生成一个大孩子。
这听起来像是家庭作业,所以我会把数字留给你。
有多个答案,取决于我们正在考虑fork是否失败的可能性(返回代码-1)。使用给定的代码,我假设您可以忽略它。