请考虑下面给出的
fork
计划:
以下程序打印hello多少次?
main(int argc, char **argv) {
int i;
for (i=0; i < 3; i++) {
fork();
printf("hello\n”);
}
}
总“你好”消息= 2 + 4 + 8 = 14(see question-1 at page-5)。
以下程序打印hello多少次?
#include <stdio.h>
#include <unistd.h>
main()
{
int i;
for (i=0; i<3; i++)
fork();
printf("hello\n");
}
总“你好”消息= 8(see question-4 at page-5)。
在我看来两个程序都是一样的。为什么解释/答案不同?
你可以解释一下吗?
答案 0 :(得分:0)
第一个程序中的printf("hello\n”);
语句位于for
循环内。
for (i=0; i < 3; i++) {
fork();
printf("hello\n”);
}
并且,第二个程序中的printf("hello\n”);
语句超出了for
循环。
for (i=0; i<3; i++)
fork();//after semicolon printf is outside the for loop's block scope.
printf("hello\n");
这是给定代码之间的差异。