read 函式和 write 函式

2021-06-19 04:55:37 字數 1063 閱讀 8344

read 函式和 write 函式

最近開始從事搜尋引擎的工作,所以又重新開始了c/c++的旅程,時隔4年

不得不複習一下c/c++其中的內容,以下內容有網上別的朋友發表的,也有我自己總結的.

1. read

#include

ssize_t read(int filedes, void *buf, size_t nbytes);

返回值:讀取到的位元組數;0(讀到 eof);-1(出錯)

read 函式從 filedes 指定的已開啟檔案中讀取 nbytes 位元組到 buf 中。以下幾種情況會導致讀取到的位元組數小於 nbytes :

a. 讀取普通檔案時,讀到檔案末尾還不夠 nbytes 位元組。例如:如果檔案只有 30 位元組,而我們想讀取 100

位元組,那麼實際讀到的只有 30 位元組,read 函式返回 30 。此時再使用 read 函式作用於這個檔案會導致 read 返回 0 。

b. 從終端裝置(terminal device)讀取時,一般情況下每次只能讀取一行。

c. 從網路讀取時,網路快取可能導致讀取的位元組數小於 nbytes 位元組。

d. 讀取 pipe 或者 fifo 時,pipe 或 fifo 裡的位元組數可能小於 nbytes 。

e. 從面向記錄(record-oriented)的裝置讀取時,某些面向記錄的裝置(如磁帶)每次最多只能返回乙個記錄。

f. 在讀取了部分資料時被訊號中斷。

讀操作始於 cfo 。在成功返回之前,cfo 增加,增量為實際讀取到的位元組數。

2. write

#include

ssize_t write(int filedes, const void *buf, size_t nbytes);

返回值:寫入檔案的位元組數(成功);-1(出錯)

write 函式向 filedes 中寫入 nbytes 位元組資料,資料**為 buf 。返回值一般總是等於 nbytes,否則就是出錯了。常見的出錯原因是磁碟空間滿了或者超過了檔案大小限制。

read 函式和 write 函式

1.read include unistd.h ssize t read int filedes,void buf,size t nbytes 返回值 讀取到的位元組數 0 讀到 eof 1 出錯 read 函式從 filedes 指定的已開啟檔案中讀取 nbytes 位元組到 buf 中。以下幾種...

pipe函式 read函式和write函式

pipe include int pipe int pipefd 2 建立乙個管道,乙個單向資料通道。pipefd 0 表示管道的讀取端。pipefd 1 是指管道的寫端。read include ssize t read int fd,void buf,size t count 簡單來說就是從檔案...

Linux程式設計 read函式 write函式

目錄 read函式 write函式 典型應用案例 include ssize t read int fd,void buf,size t count size t fread void ptr,size t size,size t nmemb,file stream fd buf count 讀操作...