《深入理解计算机系统》P652页的select程序
来源:互联网 发布:c语言文件处理引言 编辑:程序博客网 时间:2024/05/18 16:37
1.原程序解释
程序是一个server的程序,主要是使用select来IO多路复用STDIN和套接字的连接请求即listenfd。
重点注意line 23-34
①监听到listenfd
这个时候就accept产生connfd,并且调用echo函数。
echo函数的作用是,一直阻塞接收对面的消息,收到消息就echo完全一样的消息给对方。
②监听到有STDIN
这个时候就调用command函数。
command函数的作用就是将stdin的信息再次printf出来。
注意:由于bash本身就要对stdin进行显示,调用command函数又会再次显示。
所以加入输入aaa,显示为
$aaa
$aaa
2.思考
①一般server
假设我们没有采用select来处理,server就是等待连接请求,当请求到达时accept并且调用echo,并阻塞在echo上面。
这个时候你会发现,在服务器所在的bash进行STDIN仍然会有显示在BASH上面。
所以我猜想,BASH这个时候实际是被共享的,即只要程序没有卡死,BASH就会被STDIN,main函数,。。。共享。
当main函数阻塞时,并不会阻止STDIN等等在BASH上面的显示。
②select server
再对比这个如果先是进行了echo就会和①的效果一样。
如果没有连接请求的情况下就是1.中②的效果。再次验证了BASH共用的观点。
0 0
- 《深入理解计算机系统》P652页的select程序
- 深入理解计算机系统读书笔记之程序的跳转
- 程序的机器级表示 读深入理解计算机系统
- 程序的机器级表示——《深入理解计算机系统》
- 深入理解计算机系统(笔记):程序的机器级表示
- 《深入理解计算机系统》读书笔记3---关于程序运行的思考
- 深入理解计算机系统:程序的机器级表示
- 深入理解计算机系统--程序的机器级表示
- 【深入理解计算机系统笔记】Linux 下 程序的链接过程
- 【深入理解计算机系统】程序是如何运行的
- 深入理解计算机系统:优化程序性能
- 《深入理解计算机系统》优化程序性能
- 《深入理解计算机系统》读书笔记--程序编译优化
- 程序性能优化-深入理解计算机系统
- 优化程序性能—《深入理解计算机系统》
- 深入理解计算机系统:优化程序性能
- 优化程序性能(《深入理解计算机系统》)
- 深入理解计算机系统--优化程序性能
- 深入理解C语言
- 433和2.4G无线通信比较
- nagios
- Apple Watch与iPhone数据通信———— Watch Connectivity
- vim快捷键
- 《深入理解计算机系统》P652页的select程序
- 日本最大的社交APP Line的服务架构(1)
- UNDO 表空间使用率100%
- 怎样实现ABBYY FineReader Pro for Mac的具体运用(二)
- 如何选择Html.RenderPartial和Html.RenderAction
- At least one JAR was scanned for TLDs解决办法
- python windows报错ConfigParser.NoSectionError: No section: 'mysql'
- popup_layer jquery 弹出层使用,说明,详解
- 微信红包的玩法-代金卷-现金红包-立减、折扣红包