您的位置:首页 > 运维架构 > Linux

从初识Linux到离不开系列(五)踏阶而上

2016-02-18 21:33 218 查看

I/O复用_浅谈

I/O复用目录

I/O模型

select函数

shutdown函数

pselect函数

poll函数

I/O模型

Unix的5种I/O模型

阻塞式I/O

非阻塞式I/O

I/O复用

信号驱动式I/O(SIGIO)

异步I/O(POSIX aio_系列函数)

前四种模型都是同步I/O,真正的I/O操作——recvfrom将进程阻塞。


select函数

select函数定义和使用方法

select(),确定一个或多个套接口的状态,本函数用于确定一个或多个套接口的状态,对每一个套接口,调用者可查询它的可读性、可写性及错误状态信息,用fd_set结构来表示一组等待检查的套接口,在调用返回时,这个结构存有满足一定条件的套接口组的子集,并且select()返回满足条件的套接口的数目。——出自百度百科(维基百科加载不出来)


select函数在 sys/select.h 中有相关定义


shutdown函数

shutdown与close区别
close限制
描述符的引用计数减1

终止读和写两个方向

shutdown
避免close的限制

pselect函数

pselec()用来等待文件描述词状态的改变,和select()类似,它增加了超时值的精度,并且可以在等待文件描述符“准备好”的同时指定一组信号掩码。

定义在 sys/select.h

int pselect(int maxfdp1,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const struct timespec *tsptr,const sigset_t *sigmask);

返回值:准备就绪的描述符数,若超时则返回0,若出错则返回-1

poll函数

poll,Linux中的字符设备驱动中有一个函数,Linux 2.5.44版本后被epoll取代。

一说起这个设备驱动,就仿佛打了鸡血一样!!!

此函数在系统调用select内部被使用,作用是把当前的文件指针挂到设备内部定义的等待

功能和select差不多,因为起初是在处理流设备,所以实现起来看着就很亲切。

poll()接受一个指向结构’struct pollfd’列表的指针,其中包括了你想测试的文件描述符和事件。

struct pollfd {

int fd; /文件描述符/

short events; /* 等待的需要测试事件 */

short revents; /* 实际发生了的事件,也就是返回结果 */

};

虽然没写多少内容,但是真的是用了很多时间来看,只能说这个理解能力和实践结合的不够完美。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: