文件名称:文件长度-中国电信智慧城市白皮书
文件大小:18.36MB
文件格式:PDF
更新时间:2024-07-29 20:46:27
Unix 环境高级编程
4.12 文件长度 s t a t结构的成员 s t _ s i z e包含了以字节为单位的该文件的长度。此字段只对普通文件、目录 文件和符号连接有意义。 S V R 4对管道也定义了文件长度,它表示可从该管道中读到的字节数,我们将 在1 4 . 2中讨论管道。 对于普通文件,其文件长度可以是0,在读这种文件时,将得到文件结束指示。 对于目录,文件长度通常是一个数,例如 1 6或5 1 2的整倍数,我们将在 4 . 2 1节中说明读目 录操作。 对于符号连接,文件长度是在文件名中的实际字节数。例如, lrwxrwxrwx 1 root 7 Sep 25 07:14 lib -> usr/lib 其中,文件长度 7就是路径名u s r / l i b的长度 (注意,因为符号连接文件长度总是由 s t _ s i z e指 示,所以符号连接并不包含通常C语言用作名字结尾的n u l l字符)。 S V R 4和4 . 3 + B S D也提供字段s t _ b l k s i z e和s t _ b l o c k s。第一个是对文件 I / O较好的块长度,第 二个是所分配的实际5 1 2字节块块数。回忆一下3 . 9节,其中提到了当我们将 s t _ b l k s i z e用于读操 作时,读一个文件所需的最少时间量。为了效率的缘故,标准 I / O库(我们将在第5章中说明 )也 试图一次读、写s t _ b l k s i z e字节。 要知道,不同的U N I X版本其 s t - b l o c k s所用的单位可能不是 5 1 2字节块。使用 此值并不是可移植的。 文件中的空洞 在3 . 6节中,我们提及普通文件可以包含空洞。在程序 3 - 2中例示了这一点。空洞是由超过 文件结尾端的位移量设置,并写了某些数据后造成的。作为一个例子,考虑下列情况: $ ls -1 core -rw-r--r-- 1 stevens 8483248 Nov 18 12:18 core $ du -s core 272 core 文件c o r e的长度超过8 M字节,而d u命令则报告该文件所使用的磁盘空间总量是 2 7 2个5 1 2字节 块(139 264字节) (在很多伯克利类的系统上,d u命令报告1 0 2 4字节块块数,S V R 4则报告5 1 2字 第 4章 文件和目录 6 7 下载