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函数每次读后都会更新偏移量+读取的字节数)

相关文章
相关标签/搜索