一、IO操作基本概念
低速IO的认识
系统调用的IO操作可以分两类:低速IO 、其他
低速IO:“低速”系统调用,可能会使进程永远堵塞,譬如:
某些特殊的文件:管道文件、设备文件、套接字文件中的被没有数据可读,读操作可能会永久堵塞调用者
某些数据不能被相同的文件类型接受(如管道文件内无空间,或者网络流控制),写操作可能会让调用者永久堵塞。
用只写模式打开FIFO,如果没有其他进程以只读的方式提前用只读打开,也会造成堵塞
对已经加上强制性记录所的文件进行读写
某些ioctl控制设备文件描述符操作时候
进程间通信中的IPC操作等
切记,读取磁盘文件有时候会暂时堵塞程序,但是不能把这种情况称为低速IO。
非堵塞IO的认识
当我们调用系统IO接口(open read write等IO操作函数)可使其操作不会永远堵塞
如果没数据等情况导致这些操作不能完成,则接口就会直接返回错误退出。
设置非堵塞IO的方法:
在调用open接口获取文件描述符时可以把文件的打开方式设置成 O_NOBLOCK方式
对于已经调用open接口获取文件描述符了,可以调用fcntl函数设置文件描述符有O_NOBLOCK