Operating system 这个程序创建了多少个进程

Operating system 这个程序创建了多少个进程,operating-system,fork,Operating System,Fork,求求你,我的大学博士太懒了,没法解答这道考题,有人能帮我吗 #include <stdio.h> #include <unistd.h> int main() { int i; for(i=0;i<3;i++) if(fork()) i++; while(1); return 1; } #包括 #包括 int main(){ int i; 对于(i=0;iwhile循环,您拥有的不是无限的,因为它们最终将返回一个

求求你,我的大学博士太懒了,没法解答这道考题,有人能帮我吗

#include <stdio.h>
#include <unistd.h>

int main() {
    int i;
    for(i=0;i<3;i++)
        if(fork()) i++;

    while(1);
    return 1;
}
#包括
#包括
int main(){
int i;

对于(i=0;iwhile循环,您拥有的不是无限的,因为它们最终将返回一个值并退出。然而,我认为,您所说的进程是指在内存中单独运行的不同线程

编辑:
在本例中,您将通过调用
fork()生成一个线程
方法,该方法将第一次返回true,并执行if语句。此时,i将变为1,在for循环结束时,i将增加1,因此下一次迭代的i=2。此时,您将再次调用fork,然后循环将退出,因此答案是在结束时有2个线程

是的,通过进程,我指的是new thread@mmvsbg,但是当第一次调用fork时,创建的线程将有一个变量I=0,这个创建的线程将创建一个变量I=0的子线程,依此类推……是这样吗?请看我上面的回答,我做了一个编辑。线程本身不会有一个变量I。I整数只是你的for循环unter,它决定了调用fork()的次数。为什么不试着输入一些
printf
语句,然后自己运行它呢?这会让你清楚地知道每个进程在做什么。