《深入理解计算机系统》P652页的select程序

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共用的观点。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值