标签:span exce 写文件 cond 超时 scanf 监控 阻塞 事件
ubuntu12.04
在实际情况中,人们往往遇到多个客户端连接服务器端的情况。由于如connet()、recv()和send() 、accept()等都是阻塞性函数,如果资源没有准备好,则调用该函数的进程将进入睡眠状态,这样就无法处理I/O多路复用的情况了。
使用fcntl()函数虽然可以实现非阻塞I/O或信号驱动I/O,但在实际使用时往往会对资源是否准备完毕进行循环测试,这样就大大增加了不必要的CPU资源的占用。在这里可以使用select()函数来解决这个问题,同时,使用select()函数还可以设置等待的时间,可以说功能更加强大。
所在库:
示例:
#include <sys/time.h>
struct timeval tv;
/* Wait up to five seconds. */
tv.tv_sec = 5;
tv.tv_usec = 0;
retval = select(1, &rfds, NULL, NULL, &tv);
返回值为>0 就是有事件发生,有几个文件描述符发生了变化
=0 超时返回
标签:span exce 写文件 cond 超时 scanf 监控 阻塞 事件
原文地址:http://www.cnblogs.com/kirk1995/p/6885976.html