Chinaunix首页 | 论坛 | 博客
  • 博客访问: 800106
  • 博文数量: 124
  • 博客积分: 1927
  • 博客等级: 上尉
  • 技术积分: 932
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-31 14:06
文章分类

全部博文(124)

文章存档

2018年(5)

2017年(2)

2016年(6)

2015年(4)

2014年(24)

2013年(7)

2012年(11)

2011年(13)

2010年(52)

我的朋友

分类: LINUX

2010-10-23 11:17:07

  poll函数

  poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。

  1.#include

  2.

  3.int poll(struct pollfd *fdarray, unsigned long nfds, int timeout);

  4.               返回:就绪描述字的个数,0-超时,-1-出错

  第一个参数是指向一个结构数组第一个元素的指针。每个数组元素都是一个pollfd结构,用于指定测试某个给定描述字fd的条件。

  struct pollfd{

  int fd;              //descriptor to check

  short events;    //events of interest on fd

  short revents;   //events that occurred on fd

  };

  要测试的条件由events成员指定,而返回的结果则在revents中存储。常用条件及含意说明如下:

poll函数可用的测试值

常量 说明
POLLIN 普通或优先级带数据可读
POLLRDNORM 普通数据可读
POLLRDBAND 优先级带数据可读
POLLPRI 高优先级数据可读
POLLOUT 普通数据可写
POLLWRNORM 普通数据可写
POLLWRBAND 优先级带数据可写
POLLERR 发生错误
POLLHUP 发生挂起
POLLNVAL 描述字不是一个打开的文件

  注意:后三个只能作为描述字的返回结果存储在revents中,而不能作为测试条件用于events中。

  第二个参数nfds是用来指定数组fdarray的长度。

  最后一个参数timeout是指定poll函数返回前等待多长时间。它的取值如下:

timeout值 说明
INFTIM 永远等待
0 立即返回,不阻塞进程
>0 等待指定数目的毫秒数

阅读(1558) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-24 16:33:06

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com