Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1792712
  • 博文数量: 335
  • 博客积分: 4690
  • 博客等级: 上校
  • 技术积分: 4341
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-08 21:38
个人简介

无聊之人--除了技术,还是技术,你懂得

文章分类

全部博文(335)

文章存档

2016年(29)

2015年(18)

2014年(7)

2013年(86)

2012年(90)

2011年(105)

分类: C/C++

2012-01-04 18:00:49

 首先生成一个带有空洞的文件
 生辰一个不带空洞的文件:
发现二者文件的大小是一样的,但是所分配的磁盘块是不一样的。
  1. #include "apue.h"
  2. #include <fcntl.h>

  3. char buf1[] = "abcdefghij";
  4. char buf2[] = "ABCDEFGHIJ";

  5. int main(void )
  6. {
  7.     int fd;

  8.     if(( fd=creat("file.hole",FILE_MODE)) < 0)
  9.         err_sys("creat error ");
  10.     /* offset now =10 */
  11.     if(write(fd,buf1,10) != 10)
  12.         err_sys("write error");

  13.     if( lseek(fd,16384,SEEK_SET ) == -1 )
  14.         err_sys("lseek error");

  15.     /* offset now =16384 */

  16.     if(write(fd,buf2,10) != 10)
  17.         err_sys("write error");
  18.     /* offet now =16394 */
  19.     exit(0);
  20. }
  1. #include "apue.h"
  2. #include <fcntl.h>

  3. int main(void )
  4. {
  5.     int fd;

  6.     if ((fd=creat("file.nohole",FILE_MODE)) < 0)
  7.         err_sys("creat error ");
  8.     int loop=1;
  9.     char *p="c";
  10.     for (loop =1; loop <=16394; loop++)
  11.     {
  12.         if (write(fd,p,1) != 1)
  13.             err_sys("write error");
  14.     }
  15.     exit(0);
  16. }
  1. -rw-r--r-- 1 ubuntu ubuntu 16394 2011-12-27 19:50 file.hole
  2. 0000000 a b c d e f g h i j \0 \0 \0 \0 \0 \0
  3. 0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
  4. *
  5. 0040000 A B C D E F G H I J
  6. 0040012
  7.  8 -rw-r--r-- 1 ubuntu ubuntu 16394 2011-12-27 19:50 file.hole
  8. 20 -rw-r--r-- 1 ubuntu ubuntu 16394 2011-12-27 20:06 file.nohole
阅读(816) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~