此程序创建的进程数

时间:2015-06-17 12:58:45

标签: 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;
}

问题是:该程序生成了多少个进程?

我绘制了进程树,我认为这个程序不会结束。所以有无数的过程,但我不确定。

1 个答案:

答案 0 :(得分:0)

你拥有的while循环不是无限的,因为它们最终将返回一个值并退出。但是,我认为通过进程你的意思是一个不同的线程将在内存中单独运行。

编辑: 在这种情况下,您将通过首次调用fork()方法生成一个线程,该方法将返回true并执行if语句。此时我将变为1,它将在for循环结束时增加一个,所以下一个迭代将有i = 2.此时你将再次调用fork然后循环将退出,所以答案最后是两个主题。