Linux中open的函数原型有两个:
int open(const char *path, int oflags);
int open(const char *path, int oflags, mode_t mode );
参数说明:
path:准备打开的文件或设备名字。
oflags:指出要打开文件的访问模式。
open调用可以在oflags参数中包括下列可选模式的组合(用”按位或“操作):
- O_APPEDN: 把写入数据追加在文件的末尾。
- O_TRUNC: 把文件长度设为零,丢弃以后的内容。
- O_CREAT: 如果需要,就按参数mode中给出的访问模式创建文件。
- O_EXCL: 与O_CREAT一起调用,确保调用者创建出文件。该模式可防止两个程序同时创建一个文件,文件若存在,open调用失败。
使用O_CREAT标志时必须使用三个参数格式的open调用,mode 是几个标志按位OR而得到:
- S_IRUSR: 读权限,文件属主。
- S_IWUSR:写权限,文件属主。
- S_ IXUSR:执行权限,文件属主。
- S_IRGRP:读权限,文件所属组。
- S_IWGRP:写权限,文件所属组
标识符名 | 标识符描述 |
---|---|
O_RDONLY | 以只读的方式打开文件 |
O_WRONLY | 以只写的方式打开文件 |
O_RDWR | 以读写的方式打开文件 |
O_CREAT | 若文件不存在,则创建该文件 |
O_EXCL | 以独占模式打开文件;若同时设置 O_EXCL 和 O_CREATE, 那么若文件已经存在,则打开操作会失败 |
O_NOCTTY | 若设置该描述符,则该文件不可以被当成终端处理 |
O_TRUNC | 截断文件,若文件存在,则删除该文件 |
O_APPEND | 若设置了该描述符,则在写文件之前,文件指针会被设置到文件的底部 |
O_NONBLOCK | 以非阻塞的方式打开文件 |
O_NELAY | 同 O_NELAY,若同时设置 O_NELAY 和 O_NONBLOCK,O_NONBLOCK 优先起作用 |
O_SYNC | 该描述符会对普通文件的写操作产生影响,若设置了该描述符,则对该文件的写操作会等到数据被写到磁盘上才算结束 |
FASYNC | 若设置该描述符,则 I/O 事件通知是通过信号发出的 |
O_DIRECT | 该描述符提供对直接 I/O 的支持 |
O_LARGEFILE | 该描述符提供对超过 2GB 大文件的支持 |
O_DIRECTORY | 该描述符表明所打开的文件必须是目录,否则打开操作失败 |
O_NOFOLLOW | 若设置该描述符,则不解析路径名尾部的符号链接 |