unix中fork()的进程总数是多少? #包括 #包括 #包括 int main(){ pid_t pid; pid=fork();/#1 如果(pid==0){ 如果(fork()>0)/#2 fork();/#3 }否则 fork();/#4 返回0; }
我真的对#4感到困惑,因为我不知道程序是否会运行这个else语句。 你们知道最终的进程总数是多少吗 这里还有另一个节目。再说一遍,那么进程的总数是多少?谢谢大家!unix中fork()的进程总数是多少? #包括 #包括 #包括 int main(){ pid_t pid; pid=fork();/#1 如果(pid==0){ 如果(fork()>0)/#2 fork();/#3 }否则 fork();/#4 返回0; },unix,operating-system,fork,Unix,Operating System,Fork,我真的对#4感到困惑,因为我不知道程序是否会运行这个else语句。 你们知道最终的进程总数是多少吗 这里还有另一个节目。再说一遍,那么进程的总数是多少?谢谢大家! #include <stdlib.h> #include <stdio.h> #include <unistd.h> int main() { pid_t pid; pid = fork(); // #1 if (pid == 0) {
#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;
}
#包括
#包括
#包括
int main(){
对于(int i=0;i<10;i++)
if(fork()){
fork();
fork();
}否则
fork();
返回0;
}
您应该在手册页中找到您需要的,特别是
成功时,在父进程中返回子进程的PID,
并且在子级中返回0
因此,在fork
调用中,我们有一个进程执行调用,但有两个进程返回:父进程和(新)子进程。它们将执行fork之后的所有代码。
进程将根据返回值知道它是子进程还是父进程(并且可以区分其操作)
知道在C中,所有非零值都是真的,就有可能知道在else的情况下,是否以及谁执行了#4:它将是孩子,实际上产生了一个孙子
这听起来像是家庭作业,所以我把计数的事情留给你
有多种答案,这取决于我们考虑fork失败的可能性(返回代码-1)与否。对于给定的代码,我假设您可以忽略它
#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;
}