Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
unix中fork()的进程总数是多少? #包括 #包括 #包括 int main(){ pid_t pid; pid=fork();/#1 如果(pid==0){ 如果(fork()>0)/#2 fork();/#3 }否则 fork();/#4 返回0; }_Unix_Operating System_Fork - Fatal编程技术网

unix中fork()的进程总数是多少? #包括 #包括 #包括 int main(){ pid_t pid; pid=fork();/#1 如果(pid==0){ 如果(fork()>0)/#2 fork();/#3 }否则 fork();/#4 返回0; }

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) {

我真的对#4感到困惑,因为我不知道程序是否会运行这个else语句。 你们知道最终的进程总数是多少吗

这里还有另一个节目。再说一遍,那么进程的总数是多少?谢谢大家!

#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;
}