pread与pwrite
函数原型
Ssize_t pread(int fd,void *buf,size_t nbytes,off_t offset);
Ssize_t write(int fd,const void *buf,size_t nbytes,off_t offset);
调用pread相当于调用lseet后再调用read函数,其区别是调用pread时无法中断其定位和读操作
不更新当前文件偏移量。
pread参数
(1) fd:要读取数据的文件描述符
(2) buf:数据缓存区指针,存放读取出来的数据
(3) count:读取数据的字节数
(4) offset:读取的起始地址的偏移量,读取地址=文件开始+offset。注意,执行后,文件偏移指针不变
Pwrite参数
(1) fd:要写入数据的文件描述符
(2) buf:数据缓存区指针,存放要写入文件中的数据
(3) count:写入文件中的数据的字节数
(4) offset:写入起始地址的偏移量,写入地址=文件开始+offset。注意,执行后,文件偏移指针不变
使用案例
在案例中有一个输出函数,可以啊pread读到的东西输出出来,并且在案例中也会把读到的东西写到另一个文件中。
#include<unistd.h>
#include<string.h>
#include<fcntl.h>
#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
#define BUFERSIZE 4096
int main(int argc,char*argv[])
{if(argc<3){perror("需要输入文件名和要保存到的另一个文件名");exit(0);}int fd,fdw;char buf[BUFERSIZE];int n;int lk;int seek =0;fd = open(argv[1],O_RDWR|O_CREAT,0777);fdw = open(argv[2],O_RDWR|O_CREAT,0777);if(fd<0||fdw<0){perror("open");exit(1);}// lseek(fd,50,SEEK_SET);while((n=pread(fd,buf,BUFERSIZE,seek))>0){printf("%s",buf);if(pwrite(fdw,buf,n,seek)<0){perror("write1");}seek+=n;}close(fd);close(fdw);printf("\n");return 0;}
pread与pwrite相关推荐
- 存储方式与介质对性能的影响
摘要 数据的存储方式对应用程序的整体性能有着极大的影响.对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们如何选择?本文给 ...
- 字符设备驱动程序 2
三.字符设备的注册 内核内部使用struct cdev结构来表示字符设备.在内核调用设备的操作之前,必须分配并注册一个或多个struct cdev.代码应包含<linux/cdev.h>, ...
- APUE(第三章)文件IO
引言 本章主要讲文件IO包括:open.read.write.lseek以及close.这些函数通常被称为不带缓冲的IO,不带缓冲至每个read与write都有内核中的一个系统调用.这些不是ISO C ...
- 如何用sysbench做好IO性能测试
2019独角兽企业重金招聘Python工程师标准>>> sysbench 是一个非常经典的综合性能测试工具,通常都用它来做数据库的性能压测,但也可以用来做CPU,IO的性能测试.而对 ...
- UNIX环境高级编程第三章
1.对于内核,所有打开或者新创建的文件都通过文件描述符引用.open或者creat获得的文件描述符传递给read或者write做相关函数的第一参数. [1]open函数,除非创建新的函数带第三个参数, ...
- 【APUE】文件 I/O 操作
博客地址 : http://blog.csdn.net/shulianghan/article/details/46980271 一. 文件打开关闭操作相关函数介绍 1. open 函数 (1) op ...
- linux多线程和锁
要内容: 第一部分 多线程 第二部分 互斥锁 第三部分 条件变量 第四部分 读写锁 第五部分 自旋锁 第六部分 线程壁垒 第七部分 记录锁 第一部分 多线程 Linux 线程的创建 ...
- pci驱动与硬件通信
接上一篇博文,当将PCI设备空间的资源映射出来之后.只需要做两件事情,PCI设备的基本框架就建立起来了. 首先注册驱动程序,调用如下函数: int iosDrvInstall() / STATUS i ...
- UNIX环境高级编程 文件I/O
大多数文件I/O 只需要用到 5个函数 : open , read , write , lseek , close 本章描述的都是不带缓冲的I/O(read write 都调用内核中的一个系统调 ...
最新文章
- Navicat 连接 RDS数据库
- 局域网共享问题全方位解决
- Windows下创建软硬链接
- php 各种排序算法,PHP四种常见排序算法
- 微信小程序云开发教程-微信小程序的JSON配置
- 省市县联动列表html代码,若依添加省市县联动三级菜单
- recycle view设置item下划线
- python有道字典_【Python】Python利用有道翻译开发API应用示例
- android国外壁纸app,4K Wallpapers,火遍全球的4K高清壁纸App,谷歌市场1300万好评!...
- Linux操作系统的性能将主要取决于,高校邦Linux操作系统安全与性能调优章节测试答案...
- 用Java实现成绩等级划分
- python入门——热量转换 I
- linux中的 inode 详解
- 步进电机每转步数和步进角关系:每转步数 = 360°/歩进角
- Linux磁盘分区工具fdisk和gdisk的区别
- 普通高等学校毕业生登记表 计算机水平,普通高等学校毕业生登记表模板-20210629233444.pdf-原创力文档...
- 云原生丨手把手教你使用zabbix监控postgresql数据库(超详细讲解)
- C# MD5加密工具类
- java逻辑题_Java蓝桥杯——逻辑推理练习题
- java使用idea编译或者打包时出现There are test failures