码迷,mamicode.com
首页 > 其他好文 > 详细

select

时间:2015-12-06 17:42:28      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

select

#include <sys/select.h>

void FD_CLR(int fd, fd_set *set);

int FD_ISSET(int fd, fd_set *set);

void FD_SET(int fd, fd_set *set);

void FD_ZERO(fd_set *set);

int select(int nfds, fd_set *readfds, fd_set * writefds, fd_set *exceptfds, struct timeval *timeout);

int pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t *sigmask);

struct timeval{

long tv_sec;

long tv_usec;

};`

struct timespec {

long tv_sec;

long tv_nsec;

};

同时监听多个阻塞的文件描述符(如多个网络连接),任一文件有数据就返回。

nfds;所关心的最大fd+1.

readfs:传入:关心的可读文件;传出:实际可读文件。

timeout:1)NULL死等;2)tv_sec=0,tv_usec=0,立即返回,0s,不等;3)tv_sec=n,tv_usec=m;有限等。

失败:-1;无设备可用:0;有设备可用,返回正数,所有可读fd数目之和。

注: Some code calls select() with all three sets empty, nfds zero, and a non-NULL timeout as a fairly portable way to sleep with subsecond precision.

可读:1)有数据;2)关闭连接;3)有新的连接请求(监听socketfd)。

可写:1)无流量控制;2)关闭连接。

异常:1)收到紧急数据。

select

标签:

原文地址:http://www.cnblogs.com/embedded-linux/p/5023783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!