Linux文件空洞解釋

 以例子結合命令理解,具體看下面內容

/********

hole.c

********/

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <fcntl.h>

char buffer1[]="abcdefghijklmnop";

char buffer2[]="1234567890";

int main(void)

{    

       int fd;

       if((fd=open("filehole",O_RDWR|O_TRUNC|O_CREAT))<0)

              printf("create error/n");

       if(write(fd,buf1,strlen(buf1))!=16)

              printf("buf1 write error/n");

       if(lseek(fd,10000,SEEK_SET)==-1)

              printf("lseek error/n");

       if(write(fd,buf2,strlen(buf2))!=10);

              printf("buf2 write error/n");

       close(fd);

       return 0;

}

sudoo@sudoo-desktop:~/fhole$ gcc  -o hole hole.c

 

sudoo@sudoo-desktop:~/fhole$ ./hole

 

sudoo@sudoo-desktop:~/fhole$ ls

filehole  hole  hole.c  hole.c~

 

sudoo@sudoo-desktop:~/fhole$ ls -l filehole

-rw-r-x--T 1 sudoo sudoo 10010 2010-03-31 19:59 filehole

 

sudoo@sudoo-desktop:~/fhole$ cp  --sparse=never filehole  fileh

sudoo@sudoo-desktop:~/fhole$ ls

fileh  filehole  hole  hole.c  hole.c~

 

sudoo@sudoo-desktop:~/fhole$ ls -l fileh

-rw-r-x--- 1 sudoo sudoo 10010 2010-03-31 20:00 fileh

 

sudoo@sudoo-desktop:~/fhole$ od -c filehole

0000000   a    b   c   d   e   f   g   h   i   j   k   l   m   n   o   p

0000020  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0

*

0023420   1   2   3   4   5   6   7   8   9   0

0023432

 

sudoo@sudoo-desktop:~/fhole$ od -c fileh

0000000   a    b   c   d   e   f   g   h   i   j   k   l   m   n   o   p

0000020  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0  /0

*

0023420   1   2   3   4   5   6   7   8   9   0

0023432

 

sudoo@sudoo-desktop:~/fhole$ stat filehole

  File: “filehole”

  Size: 10010           Blocks: 16          IO Block: 4096   普通文件

Device: 801h/2049d       Inode: 297588      Links: 1

Access: (1650/-rw-r-x--T)  Uid: ( 1000/   sudoo)   Gid: ( 1000/   sudoo)

Access: 2010-03-31 19:59:41.000000000 +0800

Modify: 2010-03-31 19:59:40.000000000 +0800

Change: 2010-03-31 19:59:40.000000000 +0800

sudoo@sudoo-desktop:~/fhole$ stat fileh

  File: “fileh”

  Size: 10010           Blocks: 24          IO Block: 4096   普通文件

Device: 801h/2049d       Inode: 297793      Links: 1

Access: (0650/-rw-r-x---)  Uid: ( 1000/   sudoo)   Gid: ( 1000/   sudoo)

Access: 2010-03-31 20:00:37.000000000 +0800

Modify: 2010-03-31 20:00:35.000000000 +0800

Change: 2010-03-31 20:00:35.000000000 +0800

 

sudoo@sudoo-desktop:~/fhole$ du filehole

8     filehole

sudoo@sudoo-desktop:~/fhole$ du fileh

12    fileh

sudoo@sudoo-desktop:~/fhole$ du -h filehole

8.0K        filehole

sudoo@sudoo-desktop:~/fhole$ du -h fileh

12K fileh

sudoo@sudoo-desktop:~/fhole$

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章