read/write

Header Files

#include <unistd.h>

Function Prototype

ssize_t read(int filedes, void *buf, size_t nbytes);
ssize_t write(int filedes, const void *buf, size_t nbytes);
  • 其中 buf 代表我讀到的資訊要存到 user space 的哪裡,可以是我們在 .c 定義的變數

Explanation

read

  1. 回傳值
    • >0: 成功讀取的位元數
    • EOF(0): 已經讀到 End-of-File
    • -1: error
  2. 每次讀取完後 offset 都會增加

write

  1. 如果open時有設O_APPEND,每次write之前都會先將 offset 設為檔案大小(從 i node table 取得)

Delay Write

當我們write時,如果沒有特別設 Synchronization ,那麼寫的資料會先停放在 buffer,而每 30 秒會有特別的 process 將 buffer 的內容同步到 Hard Disk