基础I/O函数
1、open函数
定义:
参数说明:
pathname指向欲打开的文件路径字符串
flags可设置的如下:
参数mode有以下的组合,只有在建立新文件时才会生效
错误代码:
open用于打开和创建文件,creat函数也可以打开一个文件,若文件不存在,则创建它。
creat函数等价于:
open(pathname,O_CREAT|O_TRUNC|O_WRONLY,mode);
运行后,fd=3,创建了tmp.txt文件。
2、write函数
定义:
参数说明:
fd:文件指针
buf:写入的数据保存在缓冲区buf中,同时文件的当前读写位置向后移
count:请求写入的字节数
返回值:
如果写入成功,返回的是实际写入的字节数
错误代码:EINTR(被信号中断) EAGAIN(当使用非阻塞I/O时,若无数据则返回此值) EBADF(参数fd非有效文件描述符或该文件已关闭)
3、read函数
定义:
参数说明:
fd:文件指针
buf:读取的数据保存在缓冲区buf中,同时文件的当前读写位置向后移
count:请求读取的字节数
返回值:
如果读取成功,返回的是实际读到的字节数
读取失败返回-1,错误代码写入error中
错误代码:EINTR(被信号中断) EAGAIN(当使用非阻塞I/O时,若无数据则返回此值) EBADF(参数fd非有效文件描述符或该文件已关闭)
4、close函数
关闭文件
5、umask函数
控制默认权限,新文件被创建时,其最初的权限由文件创建掩码决定
总结:
fread/read的区别:
fread是C标准的库函数,后者是操作系统有关的系统调用
fread返回的是FILE结构指针,read返回的是int文件号
如果文件的大小是8k,如果用read/write,则系统自动分配缓存,则读出文件需要四次系统调用来实际从磁盘上读出
如果用fread/fwrite,则系统自动分配缓存,则读出此文件只要一个系统调用从磁盘上读出