C 程式設計/POSIX 參考/unistd.h/read
外觀
在大多數現代 作業系統 中,需要從 檔案 中訪問資料的程式,該檔案儲存在 檔案系統 中,會使用 read 系統呼叫。該檔案由 檔案描述符 標識,該檔案描述符是從之前對 open 的呼叫中獲得的。該系統呼叫會讀取由呼叫者指定的資料,以位元組為單位,從檔案中讀取資料,然後將資料儲存到呼叫程序提供的緩衝區中。
read 系統呼叫可以接受三個引數
- 檔案的描述符,
- 儲存讀取資料的緩衝區,以及
- 要從檔案中讀取的位元組數。
read 系統呼叫的介面由 POSIX 規範標準化。透過呼叫 read 函式來讀取檔案中的資料
ssize_t read(int fd, void *buf, size_t count);
返回值是讀取的位元組數(零表示 檔案末尾),檔案位置會根據該數字向前移動。如果該數字小於請求的位元組數,則不構成錯誤;這種情況可能發生,例如,因為現在實際可用的位元組數更少(可能是因為我們接近檔案末尾,或者因為我們正在從 管道 或 終端 讀取),或者因為系統呼叫被 訊號 中斷。
或者,當發生錯誤時,會返回 -1,在這種情況下,errno 會被適當地設定,並且檔案位置(如果有)是否會發生變化是未指定的。