Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3905896
  • 博文数量: 534
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4800
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(534)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(253)

2006年(73)

分类: C/C++

2008-05-23 19:35:15

看一个简单的实例(具体的错误处理和更详细的内容没些):

  int           fd;
  uint8_t       buf[4096];

  fd = open("/tmp/rmp/a.rmp", O_CREAT|O_BINARY|O_RDWR, 0644); /* 该文件是新建立的 */
  memset(buf, 0xEF, sizeof(buf));

  printf("pwrite ret: %d\n", pwrite(fd, buf, 1023, 10));

  printf("pread ret: %d\n", pread(fd, buf, 20, 0));

  mem_dump(buf, 20, 0);

当把20 bytes数据读出来的时候,返回结果为:
pwrite ret: 1023
pread ret: 20
 T 4G M 4K   +0-+1-+2-+3-+4-+5-+6-+7-+8-+9-+A-+B-+C-+D-+E-+F  0123456789ABCDEF
 00000000000 00 00 00 00 00 00 00 00-00 00 EF EF EF EF EF EF  ................
 00000000010 EF EF EF EF                                      ....

原来当文件出现空洞的时候系统为根据文件的块结构适当的把空洞部分补成0, 我测试的文件系统为: ext3, 环境:
Linux localhost.localdomain 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:55:12 EDT 2007 i686 i686 i386 GNU/Linux

今天下午就犯过这样的错误, 以为该部分内容为空呢!记住了。
阅读(2235) | 评论(0) | 转发(0) |
0

上一篇:The syntax of FTP URLs

下一篇:linux objdump

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