Linux系统—read、write函数

ssize_t read(int fd, void *buf, size_t count);
//将文件中的数据读入内存ssize_t write(int fd, const void *buf, size_t count);
//把内存中的数据写入到文件里

实现文件拷贝:

1.1 read函数

输入以下命令查看函数帮助文档:

man 2 read/write
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
  • 参数

    • fd: 文件描述符,open得到的,通过这个文件描述符操作某个文件
    • buf:需要读取数据存放的地方,数组的地址(传出参数
      • 传出参数:传入一个空的数组进去,函数将内容保存到数组后,可以通过数组取数据
    • count:指定的数组的大小
  • 返回值
    • 成功

      • >0:返回实际的读取到的字节数
      • =0:文件已经读取完了
    • 失败:返回-1,并且设置errno

1.2 write函数

#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
  • 参数

    • fd:文件描述符,open得到,通过文件描述符操作某个文件
    • buf:要往磁盘写入的数据
    • count:要写的数据的实际的大小
  • 返回值
    • 成功:返回实际写入的字节数
    • 失败:返回-1,并设置合适的errno

1.3 实现文件拷贝

编写copyfile.c:

#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>int main() {// 1. 通过open打开english.txt文件,只读int srcfd = open("english.txt", O_RDONLY);if(srcfd == -1) {perror("open");return -1;}// 2. 创建一个新的文件(拷贝文件),只写int destfd = open("cpy.txt", O_WRONLY | O_CREAT, 0664);if(destfd == -1) {perror("open");return -1;}// 3. 频繁的读写操作// 创建缓冲区char buf[1024] = {0};int len = 0;while(( len = read(srcfd, buf, sizeof(buf)) ) > 0 ) {// 每读一次数据,就写入到拷贝文件中write(destfd, buf, len);}// 4. 关闭文件close(srcfd);close(destfd);return 0;
}

在终端中GCC编译并运行,得到拷贝文件cpy.txt

fuerer@fuerer-virtual-machine:~/Linux/lesson10$ ls
copyfile.c  english.txt
fuerer@fuerer-virtual-machine:~/Linux/lesson10$ gcc copyfile.c -o copy
fuerer@fuerer-virtual-machine:~/Linux/lesson10$ ls
copy  copyfile.c  english.txt
fuerer@fuerer-virtual-machine:~/Linux/lesson10$ ./copy
fuerer@fuerer-virtual-machine:~/Linux/lesson10$ ll
总用量 280
drwxrwxr-x  2 fuerer fuerer   4096 3月  24 10:31 ./
drwxrwxr-x 11 fuerer fuerer   4096 3月  24 10:02 ../
-rwxrwxr-x  1 fuerer fuerer   8528 3月  24 10:31 copy*
-rw-rw-r--  1 fuerer fuerer   1792 3月  24 10:31 copyfile.c
-rw-rw-r--  1 fuerer fuerer 129772 3月  24 10:31 cpy.txt
-rw-rw-r--  1 fuerer fuerer 129772 3月  24 10:21 english.txt

cpy.txt与english.txt大小均为 129772 个字节

【Linux系统IO函数】read、write函数及实现文件拷贝相关推荐

  1. 【Linux系统IO函数】lseek函数

    Linux系统IO函数-lseek函数 1.1 lseek函数与标准C库的fseek函数 lseek函数对应标准C库中的fseek函数 查看标准C库中的fseek函数使用说明: (shell输入) m ...

  2. Linux 系统 IO之 lseek 函数

    Linux 系统 IO之 lseek 函数 文章目录 Linux 系统 IO之 lseek 函数 1. lseek 函数 1.1 头文件包含 1.2 函数原型 1.3 函数功能 1.4 函数返回值 1 ...

  3. 标准C库IO函数和Linux系统IO函数对比

    标准C库IO函数和Linux系统IO函数对比 man 3 fopen #查看函数详情 虚拟地址通过mmu映射到真是的地址空间

  4. Linux中assert头文件,linux系统下如何使用assert函数

    linux系统下如何使用assert函数 只要看得懂程序的人都知道assert,在Windows下使用VC编写,使用assert之后,只需在IDE中设置为debug版或者是release版,编译器就会 ...

  5. Linux系统编程 37 -makefile2个函数和clean

    Linux系统编程 37 -makefile2个函数和clean 学习笔记 一个makefile 就是用一个个规则凑在一起 2个函数 wildcard patsubst wildcard 百搭牌,通配 ...

  6. Linux系统IO分析工具之iotop常用参数介绍

      Linux系统IO分析工具之iotop常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的 ...

  7. linux目录统计编程,linux系统编程----统计一个目录下的普通文件个数

    主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能. 首先介绍一下函数原型: 打开一个空目录 DIR *opendir(const char ...

  8. VMware虚拟机的linux系统无法与主机复制粘贴文字以及文件解决办法

    VMware虚拟机的linux系统无法与主机复制粘贴文字以及文件解决办法 Ubuntu只需要输入两行代码: sudo apt-get autoremove open-vm-toolssudo apt- ...

  9. linux系统下shell命令使用通配符批量创建文件或目录

    linux系统下shell命令使用通配符批量创建文件或目录 批量创建log文件 批量创建文件夹 批量删除目录 批量创建log文件 touch {1..5}.log 批量创建文件夹 mkdir dir_ ...

  10. 【Linux系统编程学习】Linux系统IO函数(open、read、write、lseek)

    此为牛客网Linux C++课程1.20课程笔记. 1.open函数 open函数有两种,分别是打开一个已经存在的文件和创建并打开一个不存在的文件. #include <sys/types.h& ...

最新文章

  1. 大年初一,今年的春晚你看了吗?
  2. Windows phone 应用开发[2]-数据缓存
  3. 解决内存不可read和written的问题
  4. hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)
  5. JMeter处理Cookie与Session
  6. 这款堪称完美的PDF编辑器,帮你节省50%的写作时间
  7. c汇编语言例题,汇编语言例题分析.doc
  8. C语言程序设计,第四版 ,谭浩强。绝对原版,最新的资料
  9. STM8学习笔记---串口printf函数的实现
  10. 网络协议 反扒机制 fidder 抓包工具
  11. 《SpringBoot实战》笔记1
  12. 笔记本没有网口真不方便
  13. 关于Django下scv文件的基本操作
  14. 高级计量经济学及stata应用_推荐使用的计量经济学教材
  15. Verilog HDL的简单应用之74ls138功能的实现
  16. 智慧工厂大数据可视化平台
  17. python:实现convolve卷积算法(附完整源码)
  18. 讯飞社区android 源码,android 讯飞语音 demo
  19. 白宁超计算机科学院,基于主动学习的传统中医症状本体构建方法研究综述.PDF...
  20. 大学计算机应用基础绩点,出国留学如何计算GPA平均分

热门文章

  1. Eclipse创建子包时显示与父包是并列关系的解决方法
  2. 马云说过的计算机名言,马云说过最洗脑10名言 马云经典语录大全
  3. kali linux 入侵教程,kali linux 入侵wordpress wpscan工具使用方法
  4. 【C++]参数的缺省值
  5. sumifs countifs 时间段
  6. 100行代码做一个周杰伦歌词生成器--python
  7. java轮训算法_轮询算法 - 小虾米的java梦 - 博客园
  8. vue3 H5 pdf插件 iphone查看pdf失败
  9. Icarus iverilog中PLI使用范例
  10. 由《爆裂鼓手》引发的产品思考