Chinaunix首页 | 论坛 | 博客
  • 博客访问: 443200
  • 博文数量: 113
  • 博客积分: 446
  • 博客等级: 下士
  • 技术积分: 1229
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-09 16:01
个人简介

Let's go!!!!!

文章分类

全部博文(113)

文章存档

2019年(5)

2018年(4)

2017年(9)

2016年(5)

2015年(39)

2014年(6)

2013年(28)

2012年(17)

分类: LINUX

2012-12-12 12:54:55

pread()和pwrite()
这两个函数可以原子性的定位搜索(seek)和执行I/O。
函数原型ssize_t pread(intfd, void *buf, size_tcount, off_toffset);
返回值:成功,返回成功读取数据的字节数;失败,返回-1;   
参数:    
(1) fd:要读取数据的文件描述符    
(2) buf:数据缓存区指针,存放读取出来的数据    
(3) count:读取数据的字节数    
(4) offset:读取的起始地址的偏移量,读取地址=文件开始+offset。注意,执行后,文件偏移指针不变
函数原型ssize_t pwrite(intfd, const void *buf, size_tcount, off_toffset);
返回值:成功,返回写入到文件中的字节数;失败,返回-1;   
参数:   
(1) fd:要写入数据的文件描述符   
(2) buf:数据缓存区指针,存放要写入文件中的数据   
(3) count:写入文件中的数据的字节数   
(4) offset:写入起始地址的偏移量,写入地址=文件开始+offset。注意,执行后,文件偏移指针不变

//pwrite.c
#include
#include
#include
#include
#include
#include
int main()
{
int fd;
char buf[10]="qwertyu";
off_t i=5;
if((fd=open("test.txt",O_WRONLY|O_CREAT|O_NONBLOCK,0666))<0)
{
perror("file is not open");
exit(1);
}
if((pwrite(fd,buf,sizeof(buf),i))<0)
{
perror("read fail");
exit(1);
}
return 0;
}
#include
#include
#include
#include
#include
#include
int main()
{
int fd;
char buf[10];
if((fd=open("test.txt",O_RDONLY|O_NONBLOCK,0666))<0)
{
perror("file is not open");
exit(1);
}
if((pread(fd,buf,sizeof(buf),6))<0)
{
perror("read fail");
exit(1);
}
printf("buf=%s\n",buf);
return 0;
}
阅读(2550) | 评论(0) | 转发(0) |
0

上一篇:linux getopt_long()

下一篇:rand() srand()

给主人留下些什么吧!~~