文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

好用的vue组件

http://elickzhao.github.io/2017/08/vue%E4%B8%80%E4%BA%9B%E7%89%B9%E5%88%AB%E6%9C%89%E7%94%A8%E7%9A%84%E6%8F%92%E4%BB%B6/...

Littlebox
16分钟前
1
0
linux 源码安装mysql8

1.安装依赖 yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel   2.下载源码包 wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-......

苏牧影子
16分钟前
0
0
BeanFactory和FactoryBean

BeanFactory BeanFactory是ioc容器的顶层接口,里面定义了一些容器基本的功能 类似ConfigurableBeanFatory和ApplicationContext就是比较高级的容器,除了基本的方法之外,还实现了很多高级的...

sendo
17分钟前
0
0
Java并发(9)- 从同步容器到并发容器

引言 容器是Java基础类库中使用频率最高的一部分,Java集合包中提供了大量的容器类来帮组我们简化开发,我前面的文章中对Java集合包中的关键容器进行过一个系列的分析,但这些集合类都是非线...

Ala6
22分钟前
1
0
Java定时器Timer学习之一

种类: 接通延时型定时器:接通延时型定时器是各种PLC(可编程控制器)中最常见最基本的定时器,这种定时器在Siemens的PLC中,成为SD型定时器 断开延时型定时器:这种定时器是当输入条件00000为ON时...

王怀楼
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部