read[計算機]

read[計算機]
read[計算機]
更多義項 ▼ 收起列表 ▲

read()會把參數fd所指的檔案傳送nbyte個位元組到buf指針所指的記憶體中。若參數nbyte為0,則read()不會有作用並返回0。返回值為實際讀取到的位元組數,如果返回0,表示已到達檔案尾或無可讀取的數據。錯誤返回-1,並將根據不同的錯誤原因適當的設定錯誤碼。read函式返回時,返回值說明了buf中前多少個位元組是剛讀上來的。參數count是請求讀取的位元組數,讀上來的數據保存在緩衝區buf中,同時檔案的當前讀寫位置向後移。有些情況下,實際讀到的位元組數(返回值)會小於請求讀的位元組數count,例如:讀常規檔案時,在讀到count個位元組之前已到達檔案末尾。

基本信息

LinuxC

定義函式

ssize_t read (int fd, void *buf, size_t count);

返回值

成功返回讀取的位元組數,出錯返回-1並設定errno,如果在調read之前已到達檔案末尾,則這次read返回0。

參數

參數count是請求讀取的位元組數,讀上來的數據保存在緩衝區buf中,同時檔案的當前讀寫位置向後移。注意這個讀寫位置和使用C標準I/O庫時的讀寫位置有可能不同,這個讀寫位置是記在核心中的,而使用C標準I/O庫時的讀寫位置是用戶空間I/O緩衝區中的位置。比如用fgetc讀一個位元組,fgetc有可能從核心中預讀1024個位元組到I/O緩衝區中,再返回第一個位元組,這時該檔案在核心中記錄的讀寫位置是1024,而在FILE結構體中記錄的讀寫位置是1。注意返回值類型是ssize_t,表示有符號的size_t,這樣既可以返回正的位元組數、0(表示到達檔案末尾)也可以返回負值-1(表示出錯)。

read函式返回時,返回值說明了buf中前多少個位元組是剛讀上來的。有些情況下,實際讀到的位元組數(返回值)會小於請求讀的位元組數count,例如:讀常規檔案時,在讀到count個位元組之前已到達檔案末尾。例如,距檔案末尾還有30個位元組而請求讀100個位元組,則read返回30,下次read將返回0。

相關函式

open,close, lseek, fread, fwrite

相關詞條

相關搜尋

熱門詞條

聯絡我們