I\O复用(poll)

int poll(struct pollfd*fds,int nfds,int timeout)

struct pollfd

{

         int fd;用户关注的文件描述符

         short events;用户关注的事件

         short revents;由内核修改,表示发生了哪些

}

nfds:数组的长度 元素的个数,用户关注的文件描述符的个数

timeout:超时时间

返回值:-1出错   0超时  >0就绪文件描述符的个数

和select对比:1、用户关注的事件类型更多2、内核修改的和用户关注的分开标识,每次调用不需要重新设置3、文件描述符不再是按位来表示,直接用int类型 3.1用户关注的文件描述符的值可以更大3.2用户关注的文件描述符的个数由用户数组来决定

poll返回时,也是将用户关注的所有文件描述符返回

poll检测就绪文件描述符的时间复杂度O(n),poll返回后,用户程序依旧需要循环检测哪些文件描述符就绪。

#define  _GNU_SOURCE
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include


#define SIZE 100
void Init_Fds(struct pollfd *fds)
{
    int i=0;
    for(;i

 

你可能感兴趣的:(Linux)