Select函数:selectLib.h vxWorks编程指南_VxWorks编程常用函数
Select函数:selectLib.h vxWorks编程指南_VxWorks编程常用函数说明(6) 3、通过Select函数实现多个IO监听:selectLib.h
当等待多个IO时,我们可以使用Select函数,fd为文件描述符:
int select(
int width, /* 最大的fd,或直接FD_SETSIZE (2048) */
fd_set * pReadFds, /* 读的fd集合 */
fd_set * pWriteFds, /* 写的fd集合 */
fd_set * pExceptFds, /* vxWorks不支持,NULL */
struct timeval * pTimeOut /* 等待时间, NULL = forever */
)
还有几个宏:
FD_SET(fd, &fdset) 设置fd的监听位
FD_CLR(fd, &fdset) 清除fd的监听位
FD_ZERO(&fdset) 清除所有监听位
FD_ISSET(fd, &fdset) fd是否有数据
例子,其中MAX意为取最大值:
Init() {
struct fd_set readFds;
int fds[4];
int width;
fds[0] = open(..);... ...;fds[3] = open(..); /* 打开IO */
width = MAX(fds[0], ... ... , fds[3])+1; /* fd的最大值+1 */
/* FOREVER {*/
FD_ZERO(&readFds); /* 设置fd_set结构 */
FD_SET(fds[0], & readFds);... ...; FD_SET(fds[3], & readFds);
if (select(width, &readFds, NULL, NULL, NULL) == ERROR) { /*监听*/
close(fds[0]); ... ...; close(fds[3]);
return;
}
for(i=0; i
if (FD_ISSET(fds[i], &readFds)) {
... ...; /* 进行读写操作 */
}
}
/* } */
}
查看评论 回复
"Select函数:selectLib.h vxWorks编程指南_VxWorks编程常用函数"的相关文章
热门文章
- 中断:iv.h vxWorks编程指南_VxWorks编程常用函数说明
- 信号:sigLib.h vxWorks编程指南_VxWorks编程常用函数
- 异常处理 vxWorks编程指南_VxWorks编程常用函数说明(1
- 网络编程:sockLib.h vxWorks编程指南_VxWorks编程常
- Watch dog :wdLib.h vxWorks编程指南_VxWorks编程常
- 事件:eventLib vxWorks编程指南_VxWorks编程常用函数
- 二进制信号量 vxWorks编程指南_VxWorks编程常用函数说
- 管道:ioLib.h vxWorks编程指南_VxWorks编程常用函数
- 消息队列:msgQLib.h vxWorks编程指南_VxWorks编程常
- 任务互斥 - 信号量:semLib.h vxWorks编程指南_VxWork