Chinaunix首页 | 论坛 | 博客
  • 博客访问: 968950
  • 博文数量: 200
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 15:07
文章分类

全部博文(200)

文章存档

2009年(12)

2008年(190)

我的朋友

分类:

2008-10-31 16:52:29

4.12 file size

1. symbol link文件的大小 ls看到的数值,是该link所指向的文件路径名的长度,可以认为是link文件本身的大小。

2. file hole:文件内部的空洞,是被计算到file size里面的,但是其实并不占据磁盘block赛。但是如果你读取空洞出的数据,得到的全是0

$ ls -l core

   -rw-r--r-- 1 sar       8483248 Nov 18 12:18 core

$ du -s core

   272        core

可见,core文件存在很多空洞,它有8m多,但只占据了272block

$ wc -c core

  8483248 core

wc得到的文件大小包括了空洞。

$ cat core > core.copy

$ ls -l core*

 -rw-r--r--  1 sar      8483248 Nov 18 12:18 core

 -rw-rw-r--  1 sar      8483248 Nov 18 12:27 core.copy

$ du -s core*

 272     core

 16592   core.copy

我们把有空洞的文件core复制一份给core.copy里,发现两个文件的file size是一样的,但是core.copy真真正正的占据了磁盘空间,它没有了空洞,core原来的空洞被替换成了0

4.13 file truncation

#include

 

int truncate(const char *pathname, off_t length);

 

int ftruncate(int filedes, off_t length);

 

Both return: 0 if OK, 1 on error

Truncate不一定只是把文件给弄小了,可以清空,还可以使文件变大,当然增加的部分可能是增加了空洞。当然有些系统不支持增加。

阅读(822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~