【Linux系统IO函数】read、write函数及实现文件拷贝
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函数及实现文件拷贝相关推荐
- 【Linux系统IO函数】lseek函数
Linux系统IO函数-lseek函数 1.1 lseek函数与标准C库的fseek函数 lseek函数对应标准C库中的fseek函数 查看标准C库中的fseek函数使用说明: (shell输入) m ...
- Linux 系统 IO之 lseek 函数
Linux 系统 IO之 lseek 函数 文章目录 Linux 系统 IO之 lseek 函数 1. lseek 函数 1.1 头文件包含 1.2 函数原型 1.3 函数功能 1.4 函数返回值 1 ...
- 标准C库IO函数和Linux系统IO函数对比
标准C库IO函数和Linux系统IO函数对比 man 3 fopen #查看函数详情 虚拟地址通过mmu映射到真是的地址空间
- Linux中assert头文件,linux系统下如何使用assert函数
linux系统下如何使用assert函数 只要看得懂程序的人都知道assert,在Windows下使用VC编写,使用assert之后,只需在IDE中设置为debug版或者是release版,编译器就会 ...
- Linux系统编程 37 -makefile2个函数和clean
Linux系统编程 37 -makefile2个函数和clean 学习笔记 一个makefile 就是用一个个规则凑在一起 2个函数 wildcard patsubst wildcard 百搭牌,通配 ...
- Linux系统IO分析工具之iotop常用参数介绍
Linux系统IO分析工具之iotop常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的 ...
- linux目录统计编程,linux系统编程----统计一个目录下的普通文件个数
主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能. 首先介绍一下函数原型: 打开一个空目录 DIR *opendir(const char ...
- VMware虚拟机的linux系统无法与主机复制粘贴文字以及文件解决办法
VMware虚拟机的linux系统无法与主机复制粘贴文字以及文件解决办法 Ubuntu只需要输入两行代码: sudo apt-get autoremove open-vm-toolssudo apt- ...
- linux系统下shell命令使用通配符批量创建文件或目录
linux系统下shell命令使用通配符批量创建文件或目录 批量创建log文件 批量创建文件夹 批量删除目录 批量创建log文件 touch {1..5}.log 批量创建文件夹 mkdir dir_ ...
- 【Linux系统编程学习】Linux系统IO函数(open、read、write、lseek)
此为牛客网Linux C++课程1.20课程笔记. 1.open函数 open函数有两种,分别是打开一个已经存在的文件和创建并打开一个不存在的文件. #include <sys/types.h& ...
最新文章
- 大年初一,今年的春晚你看了吗?
- Windows phone 应用开发[2]-数据缓存
- 解决内存不可read和written的问题
- hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)
- JMeter处理Cookie与Session
- 这款堪称完美的PDF编辑器,帮你节省50%的写作时间
- c汇编语言例题,汇编语言例题分析.doc
- C语言程序设计,第四版 ,谭浩强。绝对原版,最新的资料
- STM8学习笔记---串口printf函数的实现
- 网络协议 反扒机制 fidder 抓包工具
- 《SpringBoot实战》笔记1
- 笔记本没有网口真不方便
- 关于Django下scv文件的基本操作
- 高级计量经济学及stata应用_推荐使用的计量经济学教材
- Verilog HDL的简单应用之74ls138功能的实现
- 智慧工厂大数据可视化平台
- python:实现convolve卷积算法(附完整源码)
- 讯飞社区android 源码,android 讯飞语音 demo
- 白宁超计算机科学院,基于主动学习的传统中医症状本体构建方法研究综述.PDF...
- 大学计算机应用基础绩点,出国留学如何计算GPA平均分
热门文章
- Eclipse创建子包时显示与父包是并列关系的解决方法
- 马云说过的计算机名言,马云说过最洗脑10名言 马云经典语录大全
- kali linux 入侵教程,kali linux 入侵wordpress wpscan工具使用方法
- 【C++]参数的缺省值
- sumifs countifs 时间段
- 100行代码做一个周杰伦歌词生成器--python
- java轮训算法_轮询算法 - 小虾米的java梦 - 博客园
- vue3 H5 pdf插件 iphone查看pdf失败
- Icarus iverilog中PLI使用范例
- 由《爆裂鼓手》引发的产品思考