文档章节

I/O复用:select和poll函数

QMonkey
 QMonkey
发布于 2014/06/17 21:46
字数 410
阅读 32
收藏 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复用。

© 著作权归作者所有

共有 人打赏支持
上一篇: Unix 进程
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
641
0
IO基础入门之I/O多路复用技术

在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程...

柳哥
2015/01/18
0
1

没有更多内容

加载失败,请刷新页面

加载更多

KaliLinux常用服务配置教程DHCP服务工作流程

KaliLinux常用服务配置教程DHCP服务工作流程 DHCP服务工作流程如图1.1所示。 具体的工作流程如下所示: (1)DHCP客户端以广播的方式发出DHCP Discover报文。 (2)所有的DHCP服务器(DHCP ...

大学霸
3分钟前
0
0
Spring Junit单元测试配置

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.2.RELEASE</version></dependency><dependency> <group......

TonyTaotao
8分钟前
0
0
线程安全与非线程安全-个人理解

类的某个方法是线程安全的, 说明这个方法在并发执行中,从开始执行到执行完毕,都是同步的, 比如:之前做的并发数据导出,并发的查询数据库, 但是在写入excel的时候,需要做一个同步,因为...

Java搬砖工程师
10分钟前
0
0
如何提升JavaScript的任务效率?学会后教给你同事

本文由云+社区发表 一、概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增...

腾讯云加社区
10分钟前
0
0
Hadoop运行在Kubernetes平台实践

Hadoop与Kubernetes就好像江湖里的两大绝世高手,一个是成名已久的长者,至今仍然名声远扬,一个则是初出茅庐的青涩少年,骨骼惊奇,不走寻常路,一出手便惊诧了整个武林。Hadoop与Kubernete...

微笑向暖wx
11分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部