C语言 I/O复用

一、I/O模型分类
  • 阻塞I/O模型;
  • 非阻塞I/O模型;
  • I/O复用(select 和 poll)模型;
  • 信号驱动I/O模型;
  • 异步I/O(POSIX的aio_系列函数)模型。

其中阻塞I/O模型、非阻塞I/O模型、 I/O复用(select 和 poll)模型、信号驱动I/O模型都是同步I/O操作、只有异步I/O模型才是异步操作。

同步I/O操作指:导致请求进程阻塞,直到I/O操作完成;
异步I/O操作指:不导致请求进程阻塞。

二、相关函数
函数描述
int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout);位于:<sys/select.h>;
功能:该函数允许进程指示内核等待多个事件中的任何一个发生,并只在一个或多个事件发生或经历一段指定的时间后才唤醒它。也就是说,我们调用select告知内核对那些描述符(就读、写或异常条件)感兴趣已经等待多长时间。我们感兴趣的描述符不局限于套接字,任何描述符都可以使用select;
返回:若有就绪描述符则为其数目,若超时则为0,若出错则为-1。
int pselect(int maxfdp1, fd_set *readset, fd_set *writeset, fd_Set *exceptset, const struct timespec *timeout, const sigset_t *sigmask);位于:<sys/select.h>;
功能:类似于select,但比select更灵活;
返回:若有就绪描述符则为其数目,若超时则为0,若出错则为-1。
int poll(struct pollfd *fdarray, unsigned long nfds, int timeout);位于:<pool.h>;
功能:类似于select,但是在处理流设备时提供了额外信息;
返回:若有就绪描述符则为其数目,若超时则为0,若出错则为-1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书香水墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值