1. 程式人生 > >Linux檔案IO操作

Linux檔案IO操作

Linux檔案IO操作包括開啟(open),建立(create),讀(read),寫(write)

開啟open

  • int open(const char *path, int oflags);
  • int open(const char *path, int oflags,mode_t mode);
    • 引數path表示:路徑名或者檔名。路徑名為絕對路徑名。
    • 引數oflags表示:開啟檔案所採取的動作
      • O_RDONLY檔案只讀;O_WRONLY檔案只寫;O_RDWR檔案可讀可寫;O_CREAT訪問該檔案時若沒有則建立
      • O_NOCTTY如果路徑指向終端,則不將裝置作為此程序的控制終端
      • O_NDELAY非阻塞方式操作檔案
    • mode表示:設定建立檔案的許可權。許可權的巨集定義很麻煩,可以直接用數
      字替代,例如0777;
    • 返回值:出錯返回-1;否則返回檔案控制代碼

建立檔案creat

  • int creat(const char * pathname, mode_t mode);
    • 引數path表示:路徑名或者檔名。路徑名為絕對路徑名。
    • 引數oflags表示:開啟檔案所採取的動作
      • O_RDONLY檔案只讀;O_WRONLY檔案只寫;O_RDWR檔案可讀可寫

寫檔案write

  • 關閉檔案close函式:
  • int close(int fd);
  • 寫檔案write函式:
  • ssize_t write(int fd, const void *buf, size_t count);
    • 引數fd表示:使用open 函式開啟檔案之後返回的控制代碼
    • 引數*buf表示:寫入的資料
    • 引數count表示:最多寫入位元組數
    • ssize_t 是資料型別,在32位機器上等同與int,在64位機器上等同與long int
    • void perror(const char *str),輸出錯誤資訊,str – 這是 C 字串,包含了一個自定義訊息,將顯示在原本的錯誤訊息之前。

讀檔案read

  • ssize_t read(int fd,void *buf,size_t len);
    • 引數fd:使用open 函式開啟檔案之後返回的控制代碼
    • 引數*buf:讀出的資料儲存的位置
    • 引數len:每次最多讀len 個位元組
    • 返回值:錯誤返回-1,執行成功返回實際讀取值