考虑de以下代码片段:
for(i = 0; i < 5; i++)
if(fork() == 0) {
printf("%d\n", i);
wait(0);
}
结果是什么以及将创建多少新流程?
答案 0 :(得分:3)
(1)这是家庭作业吗? - 关于家庭作业的问题是可以的,让某人为你完成你的家庭作业不是。
(2)你为什么不尝试看看?
(3)如果进程本身没有子进程,则wait(立即)返回-1。
(4)警告每个子进程在wait(0);之后将继续循环 - 也就是说,父进程将分叉并且子进程将打印0;第二轮,两个进程都会分叉,他们的孩子将打印1;第三轮,所有四个进程将分叉,他们的四个孩子将打印2,依此类推。
(5)另外,要注意每个进程独立运行 - 第一个孩子可能在父进行一次之前绕过循环几次,反之亦然。
如果你有一台计算机可以访问互联网,你就有一台计算机可以尝试 - 如果你将来要做C作业,那么下载一个免费的C编译器是值得的。电脑。在http://bellard.org/tcc/
尝试Tiny C.