fd_set 设置的监听是谁? select选择的是谁 ? 最大监听是多少? 轮询监听有没有错误?
by a174787252 - 网络技术 - 2013-05-17 18:23:48 阅读(879) 回复(0)
下面一段代码 void do_sleep (int i, int loop) { int val = (i * i + 7 * i + loop) % SLEEP_BUFS; struct timeval tv; val = sleepbuf[val]; tv.tv_sec = 0; tv.tv_usec = val; select(0, NULL, NULL, NULL, &tv); } 这里的select()函数是起sleep作用吗,第一回见,请教各位 不知道发到哪个版。。。发到这里了
select函数的C API版本是这样的: int select( int width,//最大句柄数加1 fd_set *read_fds,//监视的可读文件句柄集合。 fd_set *write_fds,//监视的可写文件句柄集合。 fd_set *excepr_fds,//监视的异常文件句柄集合。 struct timeval *timeout);本次select()的超时结束时间。(见/usr/sys/select.h, 可精确至百万分之一秒!) ...
允许进程指示内核等待多个事件中的任一个发生,并仅在一个或多个事件发生或经过某指定的时间后才唤醒进程。 作为一个例子,我们可以调用函数select并通知内核仅在下列情况发生时才返回 集合{1,4,5}中的任何报述字准备好读 集合{2,7}的任何描述字准备好写 集合{1,4}中的任何描述字有异常条件待处理 已经过了10.2秒 通知内核我们对哪些描述字感兴趣(读、写或异常条件)以及等待多长时间。 描述字不受限于套接口:任何描述字(例...
重读2.4 052 fs/select.c target="_blank">http://docs.google.com/Doc?id=dcbsxfpf_213vc73kssk 2008-4-22 这里讨论的是select和poll的系统调用实现方式. 首先要熟悉的是内核中为poll和select定义的各种输入输出消息的含义: POLLIN 有数据可以读入,read不会阻塞,注意:select的请情况下,即使到EOF也是ready的. POLLPRI 紧急数据,比如TCP,或者packet 模式的peseudo-terminal发现slave的状态有变化....
我有两个线程 在其中一个线程中retval = select(fd + 1,&rfds,NULL,NULL,NULL);等待有数据可读, 如果我在另外一个线程中close(fd); select 不退出 这是为什么?有没有什么办法?
int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout); 编程出现问题 首先,设置超时时间 struct timeval overtime; overtime.tv_sec = 2; overtime.tv_usec = 0; ret = select(max, &fdset, NULL, NULL, &overtime); 用TCP连接,连接套接字已经加入fdset中,但是运行程序后,在第一个2秒超时后,ret根本不等待超时, 一直不停的返回0.以至于连接上了也无法发送数据。 这是为何?...
select函数详解 -------------------------------------------------------------------------------- 来自 http://www.phpchina.com/html/89/36289-16239.html select系统调用是用来让我们的程序监视多个文件句柄(file descrīptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。 文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄...