1. read
#include<unistd.h>
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<unistd.h>
ssize_t write(int filedes, const void *buf, size_t nbytes);
返回值:寫入檔案的位元組數(成功);-1(出錯)
write 函式向 filedes 中寫入 nbytes 位元組資料,資料**為 buf 。返回值一般總是等於 nbytes,否則就是出錯了。常見的出錯原因是磁碟空間滿了或者超過了檔案大小限制。
read 函式和 write 函式
read 函式和 write 函式 最近開始從事搜尋引擎的工作,所以又重新開始了c c 的旅程,時隔4年 不得不複習一下c c 其中的內容,以下內容有網上別的朋友發表的,也有我自己總結的.1.read include ssize t read int filedes,void buf,size t ...
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 讀操作...