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 正在思考一 ...
随机推荐
- VS调用python方法
1. 安装python3.7 2. Vs2010中配置python: 3.添加头文件:#include <Python.h> 4.问题:error LNK2001: 无法解析的外部符号 ...
- K线数据库表结构
-- -- 数据库: `bittrex` -- -- -------------------------------------------------------- -- -- 表的结构 `ltc` ...
- (转)Unity3d的3种截图方法
下面是我总结的.在u3d中的,三种截屏方法: 1.使用Application类下的CaptureScreenshot方法. void CaptureScreen() { Application.Cap ...
- javascript 之 valueOf
var m = { i:10, toString:function () { console.log('toString'); return this.i; }, valueOf:function ( ...
- javascrpt 页面格式化页面
下面这个页面,格式化javaScript <html> <head> <title>JS格式化工具 </title> <meta http-equ ...
- jQuery中this与$(this)的差别
jQuery中this与$(this)的差别 $("#textbox").hover( function() { this.title ...
- 关于android:windowNoTitle不起作用的解决办法
今天测试一个新功能的时候,在styles.xml设置<item name="android:windowNoTitle">true</item>并没有生效, ...
- APIENTRY
1.在widnows编程中int APIENTRY WinMain中APIENTRY是什么意思,其什么作用? winapi表示此函数是普通的winapi函数调用方式,apientry则表明此函数是应用 ...
- DecisionTree
1.信息增益的定义,也就是互信息 2.信息增益的推导 由公式即可得到信息增益 信息增益存在偏向于选择取值较多的特征的问题,信息增益比可以对这一问题进行修正 3.信息增益比 4.基尼指数,基尼指数越大, ...
- vue父子组件传值加例子
例子:http://element-cn.eleme.io/#/zh-CN/component/form 上进行改的 父传子:用prop:子组件能够改变父组件的值,是共享的,和父操作是 ...