文档章节

I/O复用:select和poll函数

QMonkey
 QMonkey
发布于 2014/06/17 21:46
字数 410
阅读 31
收藏 0
TCP客户同时处理两个输入:标准输入和TCP套接字。我们遇到的问题就是在客户阻塞于fgets调用期间,服务器进程会被杀死。服务器TCP虽然正确地给客户TCP发送了一个FIN,但是既然客户进程正阻塞于标准输入读入的过程,它将看不到这个EOF,直到从套接子读取为止。这样的进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个或多个I/O条件就绪(也就是说输入已准备好读取,或者描述符已能承受更多的输出),它就通知进程。这个能力成为I/O复用。


有些系统提供了更为先进的让进程在一串事件上等待的机制。轮询设备就是这样的机制之一。


I/O复用典型使用在下列网络应用场合。
(1)当客户处理多个描述符(通常是交互式输入和网络套接字)时,必须使用I/O复用。
(2)一个客户同时处理多个套接字是可能的,不过比较少见。
(3)如果一个TCP服务器既要处理监听套接字,又要处理已连接套接字,一般就要使用I/O复用。
(4)如果一个服务器既要处理TCP,又要处理UDP,一般就要用I/O复用。
(5)如果一个服务器要处理多个服务或者多个协议,一般就要使用I/O复用。

© 著作权归作者所有

共有 人打赏支持
QMonkey
粉丝 0
博文 8
码字总数 8066
作品 0
广州
IO多路复用原理剖析

(最近笔试遇到笔试题:select,poll,epoll都是IO多路复用的机制)。 I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应...

Panda_Jerry
2017/11/01
0
0
select, poll, epoll I/O复用介绍

什么是I/O复用? 内核监视多个文件描述符(I/O文件句柄),一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。 I/O多路复用又被称为“事件驱动”(比如读写事...

xiaoxlm
07/17
0
0
Linux的I/O多路复用机制之--select&poll

1. Linux下的五种I/O模型 1)阻塞I/O(blocking I/O) 2)非阻塞I/O (nonblocking I/O) 3) I/O复用(select 和poll) (I/O multiplexing) 4)信号驱动I/O (signal driven I/O (SIGIO)) 5)异......

duanjiatao
2016/08/09
0
0
Linux系统文件I/O编程(三)---I/O多路复用

多路复用 函数说明 我们都知道fcntl()函数解决了文件共享的问题,如果不知道请看:http://blog.csdn.net/mybelief321/article/details/8993138。接下来该处理I/O复用的情况了。那么,什么是I...

长平狐
2013/06/17
599
0
Linux I/O复用中select poll epoll模型的介绍及其优缺点的比较

关于I/O多路复用: I/O多路复用(又被称为“事件驱动”),首先要理解的是,操作系统为你提供了一个功能,当你的某个socket可读或者可写的时候,它可以给你一个通知。这样当配合非阻塞的socke...

newlife111
01/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
0
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
21
5
centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部