read(),write() 读/写文件

read

read()是一个系统调用函数。用来从一个文件中,读取指定长度的数据到 buf 中。

使用read()时需要包含的头文件: <unistd.h>

函数原型:

  ssize_t read(int fd, void *buf, size_t count);

  ssize_t是系统头文件中 typedef 定义的数据类型,相当于 signed int。

参数:

  fd:要从中读取内容的文件的文件描述符。

  count:期望读取的文件字节数。

返回值:

  成功 返回读到的字节数; 已读到文件结尾返回 0; 出错返回 -1。

Write

 write()是一个系统调用函数,作用是将buf 中的内容写入到文件中。

使用write()函数时要包含头文件 <unistd.h>。

函数原型:

  ssize_t write(int fd, char *buf, size_t count)

参数:

  fd:要从中读取内容的文件的文件描述符。

  count:期望读取的文件字节数。

返回值:

  写入成功返回实际写入的字节数,出错返回-1。

  不得不提的是,返回-1的常见原因是:磁盘空间已满,超过了一个给定进程的文件长度。    

使用read(),write()完成文件拷贝:

 1  #include <unistd.h>
 2  int main(int argc, char *argv[])
 3 {
 4    int fs = open(argv[1], O_RDONLY);    //打开要复制的源文件
 5    if (fs == -1)
 6     {
 7      perror("open source file");
 8      return -1;
 9    }
10    int fd = open(argv[1], O_RDONLY | O_CREAT | O_EXCL, 0666);    //创建要复制的目标文件,若文件已存在退出
11    if (fd < 0)
12     {
13      perror("open dest file");
14      return -1;
15    }
16 
17    char buf[32] = {0};
18    int count ;
19    while ((count = read(fs, buf, sizeof(buf))) > 0)    //从源文件读取数据并写入目标文件
20    {
21      write (fd, buf, strlen(buf));
22    }  
23    close(fs);
24    close(fd);
25    return 0;
26  }
原文地址:https://www.cnblogs.com/chen-farsight/p/6023425.html