读书人

UNIX环境高级编程-高级I/O(十四)

发布时间: 2013-09-24 11:29:02 作者: rapoo

UNIX环境高级编程--高级I/O(十四)
一、概述

非阻塞I/O,记录锁、系统V流控制、I/O多路转接(select和poll函数)、readv和writev函数以及存储映射I/O(mmap),这些都是高级I/O

二、非阻塞I/O

在以前的章节中将系统调用分成“低俗”系统调用和其他系统调用两类。低俗系统调用是可能会使进程永远阻塞的一类系统调用,包括如下调用:

1)读操作可能会使调用永远阻塞,如数据部存在

2)写操作可能会使调用者永远阻塞,

3)在某种条件发生之前,打开某些类型的文件会被阻塞(例如打开一个终端设备可能需等到与之连接的调职解调器应答)

4)对已经加上强制性记录所的文件进程读写

5)某些ioctl操作

6)某些进程间通信函数

非阻塞I/O使我们调用open、read和write这样的I/O操作,并使这些操作不会永远阻塞。

对于一个给定的描述符有两种方法对其指定非阻塞I/O

1)如果调用open获得描述符,则可指定O_NONBLOCK标志

2)对于已经打开的一个描述符,则可调用fcntl,由该函数打开O_NONBLOCK文件状态标志。

读书人网 >编程

热点推荐