博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EMC的一个笔试题目
阅读量:2235 次
发布时间:2019-05-09

本文共 920 字,大约阅读时间需要 3 分钟。

 同学参加了EMC的笔试回来,说了一个EMC的一个笔试题目,他没有答上来,就问我。我感觉很有意思,就拿出来分析一下。

======================================
int main(int argc, char* argv[])
{
   fork();
   fork() && fork() || fork();
   fork();
}
不算main这个进程自身,到底创建了多少个进程啊?
======================================
为了解答这个问题,我们先作一下弊,先用程序验证一下,到此有多少个进程。
int main(int argc, char* argv[])
{
   fork();
   fork() && fork() || fork();
   fork();
  
   printf("+/n");
}
在代码最后加一个printf语句,看最后有多少行,就说明有多少进程。
答案是总共20个进程,出去main进程,还有19个进程。
我们再来仔细分析一下,为什么是还有19个进程。

p, li { white-space: pre-wrap; }

第一个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*5=20个进程,除去main主进程,就是19个进程了。

 

转自:http://blog.chinaunix.net/u/12592/showart.php?id=2084111

posted on
2009-11-04 10:33  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/sunyubo/archive/2009/11/04/2708299.html

你可能感兴趣的文章
(一)alin‘s mysql学习笔记----概述
查看>>
(二)alin’s mysql学习笔记----mysql的存储引擎
查看>>
(三)alin’s mysql学习笔记----常用的join连接查询
查看>>
(四)alin’s mysql学习笔记----索引简介
查看>>
分布式系统中的幂等性的理解
查看>>
spring的注解开发中的常用注解(一)------@bean @Configuration @ComponentScan @Import @Scope @Lazy
查看>>
(五)alin’s mysql学习笔记----索引性能分析
查看>>
Spring中使用@Transactional注解进行事务管理的时候只有应用到 public 方法才有效
查看>>
springboot整合rabbitmq及rabbitmq的简单入门
查看>>
mysql事务和隔离级别笔记
查看>>
事务的传播属性(有坑点)自调用失效学习笔记
查看>>
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
查看>>
动态代理实现AOP
查看>>
23种常见的java设计模式
查看>>
关于被final修饰的基本数据类型一些注意事项
查看>>
java Thread中,run方法和start方法的区别
查看>>
在 XML 中有 5 个预定义的实体引用
查看>>
XML 元素是可扩展的
查看>>
避免 XML 属性?针对元数据的 XML 属性
查看>>
XML DOM nodeType 属性值代表的意思
查看>>