对于如下C语言程序 int main() { printf("Hello WoAd\n"); fork(); printf("HelloWoAd\n"); fork(); printf("Hello WoAd\n"); }

admin2020-03-31  38

问题 对于如下C语言程序
  int main()
  {
  printf("Hello WoAd\n");
  fork();
  printf("HelloWoAd\n");
  fork();
  printf("Hello WoAd\n");
  }
  在UNIX操作系统中正确编译链接后,其正确的运行结果是(    )。

选项 A、共打印出6行Hello World
B、共打印出7行Hello World
C、共打印出8行Hello World
D、共打印出9行Hello World

答案B

解析 fork()函数执行的特点是,只被调用一次,却会返回两次,一次是在调用进程(父进程)中,一次是在新创建的子进程中。如果标记第1个fork()函数为f1,第2个fork()函数为f2。则父进程调用f1产生的子进程代码与父进程一样,但起始执行指令是从f1开始执行的,所以共打印行数为1+f1+1+f21行。调用f1执行后打印行数为1+f2+1行,调用f2执行后打印行数为1行,所以共打印行数为7行。故本题答案选择B选项。
转载请注明原文地址:https://jikaoti.com/ti/j9A7FFFM
0

最新回复(0)