关于文件块数的问题
请问再linux下stat()函数的返回的stat结构体有3个域: 
 off_t                           st_size;               /*   total   size,   in   bytes   */ 
 blksize_t               st_blksize;      /*   blocksize   for   filesystem   I/O   */ 
 blkcnt_t                  st_blocks;         /*   number   of   blocks   allocated   */ 
 按照上面的解释因该是st_size=st_blksize*st_blocks 
 可实际上却不是这样,哪位高人能办我解决这个问题,谢谢了 
       File:   `a.out ' 
       Size:   5031                                    Blocks:   24                           IO   Block:   4096         regular   file 
 Device:   310h/784d                     Inode:   16813                     Links:   1 
 Access:   (0755/-rwxr-xr-x)      Uid:   (            0/            root)         Gid:   (            0/            root) 
 Access:   2007-04-27   11:13:39.000000000   +0800 
 Modify:   2007-04-27   11:13:38.000000000   +0800 
 Change:   2007-04-27   11:13:38.000000000   +0800 
------解决方案--------------------首先,文件存储的单位至少是block,也就是不到1个block大小的文件也会至少占用1个block。   
 其次,为了减少文件的碎片,Ext2文件系统尽力在已分配给文件的最后一个块附近找一个新块 
 分配给该文件。如果失败,Ext2文件系统又在包含这个文件索引节点的块组中搜寻一个 
 新的块。作为最后一个办法,可以从其他一个块组中获得空闲块。 
 Ext2文件系统使用数据块的预分配策略。文件并不仅仅获得所需要的块,而是获得一组 
 多达8 个邻接的块。   
 在我的机器上,reiserfs文件系统,5k多的文件是16个block,对于你的例子,不知道为什么是24个,也许是文件系统不一样。你可以多试几个文件,看看是否都是24.