多任务I/O

1、select()

#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>

struct timeval {
       long tv_sec;
       long tv_usec;
};

int select (int n,
            fd_set *readfds,
            fd_set *writefds,
            fd_set *exceptfds,
            struct timeval *timeout);
FD_CLR(int fd,fd_set *set);
FD_SET(int fd,fd_set *set);
FD_ISSET(int fd,fd_set *set);
FD_ZERO(int fd,fd_set *set);
2、poll()

#include <sys/poll.h>

struct pollfd {
       int fd;
       short events;
       shrot revents;
};

int poll (struct pollfd *fds,unsigned int nfds,int timeout);
/*timeout以秒为单位,
 *若此参数为负值,表示无限等待;
 *若此参数为0,表示立即返回并列出已就绪的可进行I/O的文件描述符。
*/
3、epoll()

#include <sys/epoll.h>

int epoll_create (int size);
/*size参数用于提示内核要监视的文件数目,
 *此值并非最大数目,设定得当可获得较佳性能,不需要设定确切数目。
*/

struct epoll_event {
       __u32 events;
       union {
             void *ptr;
             int fd;
             __u32 u32;
             __u64 u64;
       } data;//该data字段供用户私人使用,常将data.fd设定成fd,反馈给用户。
};
int epoll_ctl (int epfd;
               int op;
               int fd;
               struct epoll_event *event);
op的有效值为:
EPOLL_CTL_ADD:根据event添加对fd的监视
EPOLL_CTL_DEL:移除对fd的监视
EPOLL_CTL_MOD:重新以event事件监视fd

int epoll_wait (int epfd,
                struct epoll_event *events,
                int maxevents,
                int timeout);//返回事件的数目
/*默认是电平触发的*/


转载于:https://my.oschina.net/u/1022744/blog/165472

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值