您的位置:首页 > 运维架构

open/creat/write/read/函数

2018-03-21 23:16 246 查看
基础I/O函数

1、open函数

定义:

参数说明:

pathname指向欲打开的文件路径字符串

flags可设置的如下:



参数说明:

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,则系统自动分配缓存,则读出此文件只要一个系统调用从磁盘上读出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: