• 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  }
  • 相关阅读:
    Kettle 使用入门
    git mac客户端使用提交与同步
    MAC 远程桌面链接 证书或链接无效
    mac下wifi无法连接的问题
    mysql时间段内查询
    mybatis 特殊符号及like的使用
    mac下剪切文件或文件夹
    eclipse下使用git下载和上传项目
    unbutu下搭建FTP服务
    mybatis 的if else
  • 原文地址:https://www.cnblogs.com/chen-farsight/p/6023425.html
Copyright © 2020-2023  润新知