read and write

調用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函數每次讀後都會更新偏移量+讀取的字節數)

相關文章
相關標籤/搜索