Linux 下 C语言 open() 和 fopen() 区别
r:只读方式打开一个文本文件(该文件必须存在)
r+:可读可写方式打开一个文本文件(该文件必须存在)
w:只写方式打开一个文本文件(若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件)
w+:可读可写方式创建一个文本文件(若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件)
a:追加方式打开一个文本文件(若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留))
a+:可读可写追加方式打开一个文本文件(若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留))
rb:只读方式打开一个二进制文件(使用法则同r) rb+:可读可写方式打开一个二进制文件(使用法则同r+) wb:只写方式打开一个二进制文件(使用法则同w) wb+:可读可写方式生成一个二进制文件(使用法则同w+) ab:追加方式打开一个二进制文件(使用法则同a) ab+:可读可写方式追加一个二进制文件(使用法则同a+)
int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);
O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式(nonblocking mode)
O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新
本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
rb:只读方式打开一个二进制文件(使用法则同r) rb+:可读可写方式打开一个二进制文件(使用法则同r+) wb:只写方式打开一个二进制文件(使用法则同w) wb+:可读可写方式生成一个二进制文件(使用法则同w+) ab:追加方式打开一个二进制文件(使用法则同a) ab+:可读可写方式追加一个二进制文件(使用法则同a+)
int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);
flags 用于指定文件的打开/创建模式,这个参数可由以下三个互斥的常量(定义于 fcntl.h)通过逻辑或(|)连接:
O_RDONLY 只读模式 O_WRONLY 只写模式 O_RDWR 读写模式
其他可选常量:
O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式(nonblocking mode)
O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新
mode 和 fopen() 函数的 mode 参数相同。
需要注意的是,当 flags 为 O_CREAT 或 O_TMPFILE 时,必须提供 mode 参数;否则 mode 参数将不起作用。
返回值
open() 的返回值是一个 int 类型的文件描述符,打开失败返回 -1。
本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
0条评论