拜托,我在大学的医生懒得解决这个考试题,有人可以帮帮我吗?
#include <stdio.h>
#include <unistd.h>
int main() {
int i;
for(i=0;i<3;i++)
if(fork()) i++;
while(1);
return 1;
}
问题是:该程序生成了多少个进程?
我绘制了进程树,我认为这个程序不会结束。所以有无数的过程,但我不确定。
答案 0 :(得分:0)
你拥有的while循环不是无限的,因为它们最终将返回一个值并退出。但是,我认为通过进程你的意思是一个不同的线程将在内存中单独运行。
编辑:
在这种情况下,您将通过首次调用fork()
方法生成一个线程,该方法将返回true并执行if语句。此时我将变为1,它将在for循环结束时增加一个,所以下一个迭代将有i = 2.此时你将再次调用fork然后循环将退出,所以答案最后是两个主题。