当前位置:嗨网首页>书籍在线阅读

08-应用程序中的轮询编程

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.2.2 应用程序中的轮询编程

应用程序中最广泛用到的是BSD UNIX中引入的select()系统调用,其原型为:

int select(int numfds, fd_set readfds, fd_set writefds, fd_set *exceptfds, struct

timeval *timeout);

其中readfds、writefds、exceptfds分别是被select()监视的读、写和异常处理的文件描述符集合,numfds的值是需要检查的号码最高的文件描述符加1。timeout参数是一个指向struct timeval类型的指针,它可以使select()在等待timeout时间后若没有文件描述符准备好则返回。struct timeval数据结构的定义如代码清单8.10所示。

代码清单8.10 timeval结构体定义

1 struct timeval {

2 int tv_sec; //

3 int tv_usec; / 微秒 /

4 };

下列操作用来设置、清除、判断文件描述符集合:

FD_ZERO(fd_set *set)

清除一个文件描述符集;

FD_SET(int fd,fd_set *set)

将一个文件描述符加入文件描述符集中;

FD_CLR(int fd,fd_set *set)

将一个文件描述符从文件描述符集中清除;

FD_ISSET(int fd,fd_set *set)

判断文件描述符是否被置位。