select()有5个参数,首先是最高的文件描述符+ 1,然后是fd_set用于读取,一个用于写入,一个用于异常。最后一个参数是struct
timeval,用于超时。错误时返回-1,超时时返回0或设置的集合中文件描述符的数量。
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/select.h>int main(void){ fd_set set; struct timeval timeout; int rv; char buff[100]; int len = 100; int filedesc = open( "dev/ttyS0", O_RDWR ); FD_ZERO(&set); FD_SET(filedesc, &set); timeout.tv_sec = 0; timeout.tv_usec = 10000; rv = select(filedesc + 1, &set, NULL, NULL, &timeout); if(rv == -1) perror("select"); else if(rv == 0) printf("timeout"); else read( filedesc, buff, len ); }


