内核一旦发现进程指定一个或多个I/O条件就绪(也就是说输入已准备好被读取,或者描述符已能承接更多的输出)它就通知进程,这个能力称为I/O复用(I/O muliplexing),是由select和poll这两个函数支持的
select
该函数允许进程指示内核等多个事件的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它。
也就是说,我们调用select告知对那些描述符(就读、写或异常条件)感兴趣以及等待多长时间
#include<sys/select.h>
#include<sys/tirne.h>
int select(int maxfdpi, fd_set * readset, fd_set * writeset, fd_set * exceptset, const struct timeval * timeout)
//返回: 若有就绪描述符则为其描述符数目,若超过时则为0, 若出错则为-1
网友评论