C語言read()函數:讀文件函數(由已打開的文件讀取數據)
頭文件:
#include <unistd.h>
定義函數:
ssize_t read(intfd,void* buf,size_tcount);
函數說明:read()會把參數fd 所指的文件傳送count 個字節到buf 指針所指的內存中. 若參數count 為0,
則read()不會有作用并返回0. 返回值為實際讀取到的字節數, 如果返回0,
表示已到達文件尾或是無可讀取的數據,此外文件讀寫位置會隨讀取到的字節移動.
附加說明:
如果順利 read()會返回實際讀到的字節數, 最好能將返回值與參數count 作比較, 若返回的字節數比要求讀取的字節數少, 則有可能讀到了文件尾、從管道(pipe)或終端機讀? ?蛘呤莚ead()被信號中斷了讀取動作.
當有錯誤發生時則返回-1, 錯誤代碼存入errno 中, 而文件讀寫位置則無法預期.
錯誤代碼:
EINTR 此調用被信號所中斷.
EAGAIN 當使用不可阻斷I/O 時(O_NONBLOCK), 若無數據可讀取則返回此值.
EBADF 參數fd 非有效的文件描述詞, 或該文件已關閉.
C語言write()函數:寫文件函數
頭文件:
#include <unistd.h>
定義函數:
ssize_t write (intfd,constvoid* buf,size_tcount);
函數說明:write()會把參數buf 所指的內存寫入count 個字節到參數fd 所指的文件內. 當然, 文件讀寫位置也會隨之移動.
返回值:如果順利write()會返回實際寫入的字節數. 當有錯誤發生時則返回-1, 錯誤代碼存入errno 中.
錯誤代碼:
EINTR 此調用被信號所中斷.
EAGAIN 當使用不可阻斷I/O 時 (O_NONBLOCK), 若無數據可讀取則返回此值.
EADF 參數fd 非有效的文件描述詞, 或該文件已關閉.