本来打算从最基本的地方开始讲文件I/O,但是写了一点之后发现自己说的好像都是一些人尽皆知的东西,觉得没有多大的意义,并且浪费口舌,所以,我想写一些大家可能经常忽视的问题,和一些有关文件I/O的一些疑点。好了,废话少说!
首先说说open函数不经常用到,但是又比较重要的一些标志:
o_nonblock:以非阻塞的方式打开文件,当我们对一些比较特殊的文件(fifo,块设备文件,字符特殊文件)进行I/O操作的时候,最好使用这个标志,因为在对这类文件进行I/O操作的时候,属于慢速的系统调用,这类系统调用会使调用进程阻塞于此,如果不希望你的程序执行到这里而停住,那么就请使用这个标志吧!
o_trunc:当是以写或读写的方式打开文件时,会截断文件。
o_excl:这个标志一般用在创建文件的时候,当同时指定o_creat时,首先会判断文件是否存在,如果存在,则此次调用就会返回出错,否则就会创建此文件。
o_noctty:如果打开的文件是与一个终端相关联的,如果指定此标志,则此终端不会成为调用进行的控制终端。