1、作用
linux一切皆文件,那么如何打开文件,靠的就是open函数。打开和创建文件,对于文件来说存在文件则打开,不存在则创建;对于设备,可以打开相应设备(串口,SPI,I2C等)。
2、函数原型
//包含头文件
#include <fcntl.h>
int open(const char *pathname, int oflag, ... );
返回值:成功则返回文件描述符,否则返回-1
- 第一个参数pathname :打开/创建文件的具体路径名,如"/home/pro/my.txt" , "/dev/ttyS0"
- 第二个参数oflag :open file flag,用于指定打开/创建模式
- 第三个参数(...):仅当创建新文件时才使用,用于指定文件的访问权限位(access permission bits)
3、模式
- O_RDONLY 只读模式
- O_WRONLY 只写模式
- O_RDWR 读写模式
其他常量FLAG:
- O_APPEND 末尾追加,每次写操作都写入文件的末尾
- O_CREAT 创建,如果指定文件不存在,则创建这个文件
- O_EXCL 是否存在,如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
- O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容
- O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端。
- O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式
用于同步输入输出的FLAG:
- O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新。
- O_RSYNC read 等待所有写入同一区域的写操作完成后再进行
- O_SYNC 等待物理 I/O 结束后再 write,包括更新文件属性的 I/O