您现在的位置: 主页 > 嵌入式操作系统 > VxWorks > Select函数:selectLib.h vxWorks编程指南_VxWorks编程常用函数
本文所属标签:
为本文创立个标签吧:

Select函数:selectLib.h vxWorks编程指南_VxWorks编程常用函数

来源: 网络用户发布,如有版权联系网管删除 2016-06-03 

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)) {
... ...; /* 进行读写操作 */
}
}
/* } */
}


              查看评论 回复



嵌入式交流网主页 > 嵌入式操作系统 > VxWorks > Select函数:selectLib.h vxWorks编程指南_VxWorks编程常用函数
 

"Select函数:selectLib.h vxWorks编程指南_VxWorks编程常用函数"的相关文章

网站地图

围观()