fork有关趣味题
第一题:
//fork1.c
#include <unistd.h>
#include <stdio.h> int main(void)
{
int i = ;
for(i = ; i < ; i++) {
pid_t fpid = fork();
if(fpid == ) {
printf("son\n");
break;
} else {
printf("father\n");
}
}
sleep();
return ; } //fork2.c
#include <unistd.h>
#include <stdio.h> int main(void)
{
int i = ;
for(i = ; i < ; i++){
pid_t fpid = fork();
if(fpid == ) {
printf("son\n");
//break; 差别
} else {
printf("father\n");
}
}
sleep();
return ; }
[root@localhost mytest]# gcc fork1.c -o fork1
[root@localhost mytest]# ./fork1
father
son
son
father
father
son [root@localhost ~]# pstree -p | grep fork1
|-sshd()-+-sshd()---bash()---fork1()-+-fork1()
| | |-fork1()
| | `-fork1() [root@localhost mytest]# ./fork2
father
son
father
father
father
son
father
son
father
son
son
son
father
son [root@localhost mytest]# pstree -p | grep fork2
|-sshd()-+-sshd()---bash()---fork2()-+-fork2()-+-fork2()---fork2()
| | | `-fork2()
| | |-fork2()---fork2()
| | `-fork2()
[root@localhost mytest]#
第二题:
#include <unistd.h>
#include <stdio.h> int main(void)
{
pid_t pid1;
pid_t pid2; pid1 = fork();
pid2 = fork(); printf("pid1=%d pid2=%d\n", pid1, pid2);
sleep();
return ; } [root@localhost mytest]# ./fork3
pid1= pid2=
pid1= pid2=
pid1= pid2=
pid1= pid2= [root@localhost mytest]# pstree -p | grep fork3
|-sshd()-+-sshd()---bash()---fork3()-+-fork3()---fork3()
| | `-fork3()
用树状图表示更清晰些:


第三题:
#include <unistd.h>
#include <stdio.h> int main(void)
{ fork() && fork() || fork();
return ; }
这个题考察了两个知识点:逻辑运算符特点与fork()理解。
假如有表达式cond1 && cond2 || cond3,会怎样执行呢?
A、如果cond1为false,就不用判断cond2,而是直接判断cond3;
B、如果cond1为true,那么:
a、如果cond2为true,就不会判断cond3;
b、如果cond2为false,还需要判断cond3。
这样进程关系图如下:

这样,本程序创建了4个新进程,总共有5个进程(5个叶子节点)。
类似地,把代码改成fork() || fork() && fork(),那么程序会创建5个进程(5个叶子节点)。
第四题:
#include <unistd.h>
#include <stdio.h> int main(void)
{ fork();
fork() && fork() || fork();
fork();
return ;
第一行: 共2个进程;
第二行:共2*5=10个进程;
第三行:共2*10=20个进程。
这样,本程序总共有20个进程,其中创建了20-1=19个新进程。
fork有关趣味题的更多相关文章
- 算法训练 Hankson的趣味题
算法训练 Hankson的趣味题 时间限制:1.0s 内存限制:64.0MB 问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Han ...
- 1172 Hankson 的趣味题[数论]
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- 1172 Hankson 的趣味题
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ...
- 一本通1626【例 2】Hankson 的趣味题
1626:[例 2]Hankson 的趣味题 题目描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson 正在思考 ...
- 洛谷 P1072 Hankson 的趣味题 解题报告
P1072 \(Hankson\)的趣味题 题目大意:已知有\(n\)组\(a0,a1,b0,b1\),求满足\((x,a0)=a1\),\([x,b0]=b1\)的\(x\)的个数. 数据范围:\( ...
- CH3201 Hankson的趣味题
题意 3201 Hankson的趣味题 0x30「数学知识」例题 描述 Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson ...
- luogu P1072 Hankson的趣味题
题目链接 luogu P1072 Hankson 的趣味题 题解 啊,还是noip的题好做 额,直接推式子就好了 \(gcd(x,a_0)=a_1=gcd(\frac{x}{a_1},\frac{a_ ...
- 洛谷P1072 Hankson 的趣味题
P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...
随机推荐
- Spring AOP和事务的相关陷阱
1.前言 2.嵌套方法拦截失效 2.1 问题场景 2.2 解决方案 2.3 原因分析 2.3.1 原理 2.3.2 源代码分析 3.Spring事务在多线程环境下失效 3.1 问题场景 3.2 解决方 ...
- 【npm start 启动失败】ubuntu 将node和npm同时更新到最新的稳定版本
https://blog.csdn.net/u010277553/article/details/80938829 npm start 启动失败,报错如下 错误提示 make sure you hav ...
- SKBUFFER详解
纯属转载,不敢侵犯别人产权!! 一. SKB_BUFF的基本概念1. 一个完整的skb buff组成(1) struct sk_buff--用于维护socket buffer状态和描述信息(2) he ...
- Numpy包简单介绍
详细介绍可以看Numpy帮助,也有很多资料,此文仅是一个简述性质的集成文章 1.简介 Numpy是Python的一个扩展包,语法和Matlab有很多相似之处.它支持高维数组和矩阵运算,也提供了许多数组 ...
- Java游戏服务器成长之路——弱联网游戏篇(源码分析)
前言 前段时间由于公司的一款弱联网游戏急着上线,没能及时分享,现在基本做的差不多,剩下的就是测试阶段了(本来说元旦来分享一下服务器技术的).公司的这款游戏已经上线一年多了,在我来之前一直都是单机版本, ...
- mysql数据库优化的几种方法
1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...
- C++必知必会
C++ Common knowledge Essential Intermediate Programming C++必知必会 [美] StephenC.Dewhurst 著 荣耀 译 人民邮电出 ...
- javascript 闭包 内存
- 百度nlp实习生转岗(猝)
一面: 大部分是问项目相关的.只记住了几个关键的问题. 1.手写快排 2.生成模型与判别模型的区别 分类问题:2种形式: F(x)=y p(y|x) 生成模型:由数据学习联合分布概率p(x,y),然后 ...
- Spring MVC 复习笔记01
1. springmvc框架 1.1 什么是springmvc spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.spring mvc是一个 ...