msww.net
当前位置:首页 >> linux下的sElECt函数是干嘛的 >>

linux下的sElECt函数是干嘛的

select是用来设置超时时间的,其第一个参数本来是一个文件号,假如读取该文件长时间没有返回则超时跳出,而这部分代码将文件号设置为0,说明只是为了控制延时 不过看你这部分代码,明显只是实现一个比较精确定时的sleep 这段代码之所以这么做,...

当然是在有输入或者输出时文件描述符的读写状态改变咯,比如标准输入的文件描述符是0,如果用select来等待0号文件描述符,那么当在键盘上敲字符时开始,就是文件描述符的读写状态改变之时,这时select函数就会返回;对于套接字描述符来说也是这...

检测系统中的文件是否进行了相对应的修改, 第一个参数是文件标示符。 readfds:select监视的可读文件句柄集合。 writefds: select监视的可写文件句柄集合。 exceptfds:select监视的异常文件句柄集合。 timeout:本次select()的超时结束时间。...

这个有几个层次的原因。 一是,C语言比C++精益,语言核心很小,C++的运行时库和特性实现起来要比C的复杂的多,比如实现动态绑定的RTTI就会有开销。而操作系统核心的一个主要设计概念就是要控制内存和速度的开销,C++显然没有C语言更合适。 二是...

select在串口编程这里是实现监听串口的数据功能的,如果串口中有接收到数据,select就会返回一个大于0的数,select会把读文件集合(fd_set)中的其他文件描述符清掉,只留下有数据的串口文件描述符,用FD_ISSET()可以判断该文件描述符是否在集合...

需不需要是写api的人决定的, 他觉得有用你就得给, 想多没意义 都检查

详见史蒂文森先生的UNIX网络编程 第一卷 大体上概括下就是 轮询抓取端口连接信息的函数

原因很简单。 因为,你按下一个键之后,缓冲区里面有数据了,也就是说,stdin已经发生了一个事件,就是有数据来了。 你一直没有对缓冲区做任何操作,因此stdin一直保持着有数据的状态。 如果你在个select返回之后,用fflush清空缓冲区,或者,把...

因为文件描述符是从0开始的 可以将第一个参数设置为FD_SETSIZE,值较大 不过通常应用程序也就4、5个描述符,用不了那么大

#include #include #include #include int main() { int rc = 0; struct timeval tv; while (true) { tv.tv_sec = 5; tv.tv_usec = 0; rc = select(0, NULL, NULL, NULL, &tv); printf("select = %d\n", rc); } return 0; }

网站首页 | 网站地图
All rights reserved Powered by www.msww.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com