1 / 5
文档名称:

两道有趣的fork面试题.pdf

格式:pdf   大小:244KB   页数:5页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

两道有趣的fork面试题.pdf

上传人:莫欺少年穷 2021/3/24 文件大小:244 KB

下载得到文件列表

两道有趣的fork面试题.pdf

相关文档

文档介绍

文档介绍:同学参加了 EMC 的笔试回来,说了一个 EMC 的一个笔试题目,他没有答上
来,就问我。我感觉很有意思,就拿出来分析一下
int main(int argc, char* argv[])
{
fork();
fork() && fork() || fork();
fork();
}
为了解答这个问题,我们先作一下弊,先用程序验证一下,到此有多少个进
程。
int main(int argc, char* argv[])
{
fork();
fork() && fork() || fork();
fork();
printf("+\n");
}
在代码最后加一个 printf 语句,看最后有多少行,就说明有多少进程。
答案是总共 20 个进程,出去 main 进程,还有 19 个进程。
我们再来仔细分析一下,为什么是还有 19 个进程。
第一个 fork 和最后一个 fork 肯定是会执行的。主要在中间 3 个 fork 上,
可以画一个图进行描述。这里就需要注意&&和||运算符。
A&&B,如果 A=0,就没有必要继续执行了;A 非 0,就需要继续执行&&B。
A||B,如果 A 非 0,就没有必要继续执行了,A=0,就需要继续执行||B。
fork()对于父进程和子进程的返回值是不同的,按照上面的 A&&B 和 A||B 的分支
进行画图,可以得出 5 个分支。
加上前面的 fork 和最后的 fork,所有的进程都会执行,会产生 4 个分支,总共
4*5=20 个分支,也就是 20 个进程,除去 main 主进程,就是 19 个进程了。
前两天有人问了个关于 Unix 的 fork()系统调用的面试题,这个题正好是我
大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分
享一下。这个题是这样的:
#include <>
#include <sys/>
#include <>
int main(void)
{
int i;
for(i=0; i<2; i++){
fork();
printf("-");
}
return 0;
}
如果你对 fork()的机制比较熟悉的话,这个题并不难,输出应该是 6 个“-”,但
是,实际上这个程序会很 tricky 地输出 8 个“-”。
要讲清这个题,我们首先需要知道 fork()系统调用的特性,
• fork()系统调用是 Unix 下以自身进程创建子进程的系统调用,一次调用,
两次返回,如果返回是 0,则是子进程,如果返回值>0,则是父进程(返回
值是子进程的 pid),这是众为周知的。
• 还有一个很重要的东西是,在 fork()的调用处,整个父进程空间会原模
原样地复制到子进程中,包括指令,变量值,程序调用栈,环

最近更新

2024年无锡出租房合同范本 8页

镀锌钢激光填粉焊接的粉末输送及工艺研究的开.. 2页

2024年无工作证明合集15篇 6页

信息科技管理概述 22页

2024年无价的友谊作文(常用5篇) 6页

2024年旅行简短文艺句子经典 4页

2024年旅行社的实习报告锦集10篇 56页

锈蚀钢绞线力学性能和粘结性能研究的开题报告.. 2页

锂离子电池超薄型电极的制备研究的开题报告 2页

2024年旅游胜地作文汇总6篇 8页

锂基高温吸碳材料的制备及性能研究的开题报告.. 2页

铸造高铬钢轧辊的研制的开题报告 2页

2024年旅游管理专业本科生求职信 7页

银行票据管理系统项目的测试设计与实施的开题.. 2页

2024年旅游座右铭 7页

银杏叶胶囊对眼压控制青光眼患者视野平均缺损.. 2页

2024年施工车辆租赁合同7篇[优] 16页

铣削颤振稳定性时域分析理论研究的开题报告 2页

铝酸盐水泥基复合功能储热材料的制备与性能研.. 2页

静脉输液治疗护理学考核试题题库及答案 38页

《思维的含义与特征》精品课件 31页

2024企业主要负责人安全培训考试题及答案优质.. 12页

叙事歌曲《二月里见罢到如今》创作及演唱解析 2页

毕业设计 论文 酒店管理系统 62页

学前儿童卫生学 220页

酒店管理系统毕业设计(论文设计) 41页

江淮六安YE2电机安装尺寸及技术参数 8页

2014安全评价课程设计任务书 6页

医院伦理委员会工作制度模板 8页