Linux select函数

select():此函数的作用是用来检测文件描述符是否已准备就绪。

参数一:numfds – 该参数的值为需要监视的文件描述最大数量加一。

参数二:readfds – 由select函数监视的读文件描述符集。

参数三:writefds – 由select函数监视的写文件描述符集。

参数四:exeptfds – 由select函数监视的异常处理文件描述符集。

参数五:timeout – 设定的检测超时值。为NULL时表示永远等待,直到有文件描述符

就绪。为具体值时如规定时间内没有检测到有描述符准备就绪,就立即返回。

返回值:0 – 超时。

-1 – 出错。

>0 – 成功且表示准被好的文件描述符。

———————————————————————————————————–

用法:

fd_set file_sets;

fd_set tmp_sets;

int fd;

fd = xx_function(); //–xx_function()的返回值是一个文件描述符–//

//—初始化文件描述符集file_sets—//

FD_ZERO(file_sets);

FD_SET(fd, file_sets);

while(1)

{

tmp_sets = file_sets; //–避免重复初始化file_sets–//

/*

select操作后的结果是如果tmp_sets中的文件描述准备就绪则不从tmp_sets中

删除,否则则从tmp_sets中删除。这也是为什么会有tmp_sets = file_sets的原

因。

*/

select(MAX_FD_SETS + 1, &tmp_sets, NULL, NULL,NULL);

for (int fd = 0; fd < MAX_FD_SETS; ++fd)

{

//—对准备就绪的描述符做相关处理—//

if (FD_ISSET(fd, tmp_sets))

{

xx_function(fd);//–处理函数–//

}

}

}

平平淡淡才是真

Linux select函数

相关文章:

你感兴趣的文章:

标签云: