当前位置:首页 > 文章 > 四级网络工程师 > 正文内容

对于如下 C 语言程序

四级网络工程师3个月前 (06-19)
int main()
{
printf("Hello World\n");
fork();
fork();
fork();
printf("Hello World\n");
}



在 UNIX 操作系统中正确编译链接后,其正确的运行结果是


共打印出 6 行 Hello World

共打印出 7 行 Hello World

共打印出 8 行 Hello World

共打印出 9 行 Hello World


答案    

共打印出 9 行 Hello World



解析    


答案是:共打印出 9 行 Hello World


分析:


初始状态下,主线程会先打印出第一行 "Hello World"。

然后调用第一次 fork(),创建一个子进程。此时,存在父进程和子进程两个进程,它们都会从 fork() 后的下一条语句继续执行。

接着,在这两个进程中各自再调用 fork(),每个进程都分裂成两个新的进程,这样就总共有 4 个进程了。

最后,这 4 个进程中的每一个再调用一次 fork(),导致进程总数增加到 8 个。每个进程都有自己的执行流,从上次 fork() 后的位置开始。

每个进程都会执行 printf("Hello World\n"),因此,除了最开始主线程打印的一次外,经过三次 fork() 后存在的 8 个进程各自还会打印一次,共计额外打印 8 行 "Hello World"。

综上所述,总共会打印出 9 行 "Hello World"(初始的父进程打印一次,之后每次 fork() 产生的所有子进程各自打印一次)。


相关文章

若一个单核处理器的系统中有多个进程存在,则这些进程是

并发并行封闭单道答案    并发解析    若一个单...

采用多道程序设计技术,能有效地提高系统的下列哪一个性能

并发灵活可靠兼容答案    并发解析    采用多道...

从计算机应用角度来看,操作系统的主要作用是提供

人机交互接口软件开发基础第一道安全防线虚拟机和扩展机答案    人机交互接口...

从软件设计和开发角度来看,操作系统的主要作用是提供

人机交互接口软件开发基础平台第一道安全防线虚拟机和扩展机答案    软件开发...

操作系统能够“合理”地组织计算机工作流程、控制程序的执行。其中“合理”是指

尽可能地利用资源,减少内存、硬盘等的浪费使得用户在操作计算机时易用、易学且易维护公平对待不同用户程序...

操作系统是一个可以从多视角考察的软件系统。下列关于操作系统的叙述中,哪一项是错误的

从应用角度看,操作系统是一个工具软件从软件设计和开发的角度看,操作系统是一个基础软件和工具软件从网络...