檔案I O(不帶緩衝)之read函式

2022-05-04 20:30:12 字數 462 閱讀 9242

呼叫read函式從開啟檔案中讀資料。

#include ssize_t read( 

int filedes, void *buf, size_t nbytest );

返回值:若成功則返回讀到的位元組數,若已讀到檔案結尾則返回0,若出錯則返回-1。

有多種情況可是實際讀到的位元組數少於要求讀的位元組數:

讀操作從檔案的當前偏移量處開始,在成功返回之前,該偏移量將增加實際讀到的位元組數。

posix.1從幾個方面對read函式的原型作了更改。其經典定義是:

int read( int filedes, char *buf, unsigned nbytes );

本篇博文內容摘自《unix環境高階程式設計》(第二版),僅作個人學習記錄所用。關於本書可參考:

檔案I O(不帶緩衝)之lseek函式

每個開啟的檔案都有乙個與其相關聯的 當前檔案偏移量 current file offset 它通常是乙個非負整數,用以度量從檔案開始處計算的位元組數 可以呼叫lseek顯示地為乙個開啟的檔案設定其偏移量 include off t lseek int filedes,off t offset,int...

檔案I O(不帶緩衝)之I O的效率

程式清單3 3中的程式使用read和write函式複製檔案。關於該程式應注意下列各點 它從標準輸入讀,寫至標準輸出,這就假定在執行本程式之前,這些標準輸入 輸出已由shell安排好。確實,所有常用的unix系統shell都提供一種方法,它在標準輸入上開啟乙個檔案用於讀,在標準輸出上建立 或重寫 乙個...

linux不帶緩衝檔案IO

本博文設計的io不屬於ansi c的檔案io,所涉及的每乙個函式都是乙個系統呼叫。主要涉及posix.1的不帶快取的io操作的基礎部分。在linux核心中,對於乙個檔案的描述只需要乙個標示符即可。而不是乙個複雜的指標,僅僅是乙個int型的整數,有檔案描述符可以直接通過系統api直接操作核心資源,換句...