对于如下 C 语言程序
int main() { printf("Hello World\n"); fork(); fork(); printf("Hello World\n"); }
在 UNIX 操作系统中正确编译链接后,其正确的运行结果为
共打印出 2 行 Hello World
共打印出 3 行 Hello World
共打印出 4 行 Hello World
共打印出 5 行 Hello World
答案
共打印出 5 行 Hello World
解析
答案是:共打印出 5 行 Hello World
分析:
初始状态下,主线程会先打印出第一行 "Hello World"。
随后调用 fork(),创建第一个子进程。此时,父进程和子进程都会从 fork() 后的下一条语句继续执行。
在父进程和子进程中,再次调用 fork(),各自再创建一个新进程。这样一来,总共有 4 个进程:最初的父进程、第一次 fork() 产生的子进程以及这两个进程各自通过第二次 fork() 创建的两个孙进程。
每个进程都会执行 printf("Hello World\n"),因此每个进程都会打印一行 "Hello World"。
综上所述,总共会打印出 5 行 "Hello World"(初始的父进程打印一次,两次 fork() 后的四个进程各自打印一次)。