Linux open函數使用方法記錄

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章