調用read函數從打開的文件中讀取數據網絡
#include <unistd.h>函數
ssize_t read(int fd, void *buf, size_t nbytes);ip
返回值:成功,返回讀取的字節數,若已經讀到了文件末尾,返回0;出錯,返回-1字符串
參數:it
fd:打開文件的描述符pip
buf:保存從文件中讀取的字符串終端
nbytes:從文件中讀取字節數,通常爲buf的長度數據
注:文件
①讀普通文件時,在讀到要求字節數(nbytes)前已經到達文件尾端,返回當前已經讀取了的字節數。pipe
②從終端設備讀取時,一般一次最多讀取一行。
③從網絡讀取時,網絡的緩衝機制可能形成返回值小於要求所要讀取的字節數。
④從pipe和FIFO讀取時,若是管道包含的字節數小於所須要的字節數,read返回實際可用的字節數。
調用write函數向打開的文件寫數據
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t nbytes);
返回值:成功,返回已寫的字節數;出錯,返回-1
注:
①對普通文件寫操做從文件的當前偏移量處開始
②若是打開文件時指定O_APPEND選項,則在每次寫操做以前,將該文件的偏移量設置在文件的當前結尾處。在一次寫入成功後,該文件偏移量增長實際寫的字節數。
原子操做
函數pread和pwrite
#include <unistd.h>
ssize_t pread(int fd, void *buf, size_t nbytes, offset_t offset);
返回值:成功,返回讀到的字節數,若已到文件末尾,返回0;出錯,返回-1
ssize_t pwrite(int fd, const void *buf, size_t nbytes, off_t offset);
返回值:成功,返回已寫的字節數;出錯,返回-1
注:
①調用pread至關於調用lseek後調用read,可是又有不一樣
※調用pread時,沒法中斷其定位和讀操做,由於這是原子操做
※不更新當前文件偏移量(read函數每次讀後都會更新偏移量+讀取的字節數)