select()函数要点解析
来源:互联网 发布:何老师都哭了知乎 编辑:程序博客网 时间:2024/06/05 20:29
网址:http://linux.die.net/man/2/select
从中摘到的信息:
1,函数库文件和原型
#include <sys/select.h>/* According to earlier standards */
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
void FD_CLR(int fd, fd_set *set);int FD_ISSET(int fd, fd_set *set);void FD_SET(int fd, fd_set *set);
void FD_ZERO(fd_set *set);
2,select() may update the timeout argument to indicate how much time was left.
这句是说,调用select()之后,可能会将timeval的值修改为调用后剩余的时间,因此,每次调用之前,timeval的值都要重新设置。
3, On exit, the sets are modified in place to indicate which file descriptors actually changed status. Each of the three file descriptor sets may be specified as NULL if no file descriptors are to be watched for the corresponding class of events.
这句是说,在函数返回时,文件描述符集的内容将会被修改,状态发生变化的文件描述符被置位。(by 杨w:文件描述符相当于一个位图,其中一个bit代表一个文件描述符,如果监视的文件描述符的状态发生了变化,那么它对应的bit会被置1)。
因此,每次调用select()函数之前,fd_set也要重新设置。
4,例子
//变量的声明和定义
int can_fd;fd_set rfds;struct timeval tv;
can_fd = open("/dev/can", O_RDWR);if(can_fd<=0){qDebug()<<"can't open can_dev "<<endl;cout<<"can't open can_dev"<<endl;return;}elseqDebug()<<"open can_dev successfully!"<<endl;
FD_ZERO(&rfds);//清空串口接收端口集FD_SET(can_fd, &rfds);//设置串口接收端口集tv.tv_sec = 0;tv.tv_usec = 50000;//50ms
- select()函数要点解析
- select()函数要点解析
- select()函数要点解析
- linux select()函数解析
- select()函数解析
- linux之select函数解析
- select函数详细用法解析
- select函数详细用法解析
- select函数详细用法解析
- select函数详细用法解析
- 函数要点
- 解析select
- linux socket的select函数的解析与事例
- select函数详细用法解析(转自:zhenhuaqin)
- XML解析器要点
- IPTV技术要点解析
- 【php】PHPExcel要点解析
- 【phpexcel】PHPExcel要点解析
- Git 版本管理工具(一)
- 一步一步走进块驱动之第十四章
- C++/C程序跟java结合时要注意的事项
- 怎样使用PhpDocumentor生成文档
- 黑马程序员——java集合
- select()函数要点解析
- OpenFlow – 打造弹性化的可控互联网
- 黑马程序员--SQL Server Truncate关键字
- dp 专题系列(一)(UVa 10635,UVa 11825,UVa 10859,Uva LiveArchive 3882 )
- No 143 · 六道面试硅谷工程师的变态题目
- Open vSwitch – 开放虚拟交换标准
- c++ 设计模式之 观察者模式
- Android屏幕适配
- Mininet – “懒惰”网络研究者的福音