- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下载
下载
第4 章 文件和目录
4.1 引言
上一章我们说明了执行 I / O操作的基本函数。其讨论围绕普通文件的 I / O进行——打开一个
文件,读或写一个文件。本章将观察文件系统的其他特征和文件的性质。我们将从 s t a t函数开
始,逐个说明 s t a t结构的每一个成员以了解文件的所有属性。在此过程中,我们将说明修改这
些属性的各个函数 (更改所有者,更改许可权等 ) ,还将更详细地察看U N I X 文件系统的结构以
及符号连接。本章结束部分介绍对目录进行操作的各个函数,并且开发了一个以降序遍历目录
层次结构的函数。
4.2 stat 、fstat 和lstat 函数
本章讨论的中心是三个s t a t函数以及它们所返回的信息。
#include sys/types.h
#include sys/stat.h
int stat(const char *p a t h n a m e , struct stat *b u f ) ;
int fstat(intf i l e d e s ,struct stat *b u f ) ;
int lstat(const char *p a t h n a m e , struct stat *b u f ) ;
三个函数的返回:若成功则为 0 ,若出错则为-1
给定一个p a t h n a m e ,s t a t函数返回一个与此命名文件有关的信息结构, f s t a t 函数获得已在描述
符f i l e d e s 上打开的文件的有关信息。l s t a t 函数类似于s t a t ,但是当命名的文件是一个符号连接时,
l s t a t返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。 (在4 . 2 1节中当以降
序遍历目录层次结构时,需要用到l s t a t 。4 . 1 6节将较详细地说明符号连接。)
l s t a t 函数不属于POSIX 1003.1-1990 标准,但很可能加到 1 0 0 3 . 1 a中。S V R 4和
4 . 3 + B S D支持l s t a t 。
第二个参数是个指针,它指向一个我们应提供的结构。这些函数填写由 b u f 指向的结构。
该结构的实际定义可能随实现而有所不同,但其基本形式是:
第 4章 文件和目录 5 5
下载
P O S I X . 1未定义s t _ r d e v ,s t _ b l k s i z e和s t _ b l o c k s字段,S V R 4和4 . 3 + B S D则定义
了这些字段。
注意,除最后两个以外,其他各成员都为基本系统数据类型 (见2 . 7节) 。我们将说明此结构
的每个成员以了解文件属性。
使用s t a t函数最多的可能是ls -l命令,用其可以获得有关一个文件的所有信息。
4.3 文件类型
至今我们已介绍了两种不同的文件类型—普通文件和目录。 U N I X系统的大多数文件是
普通文件或目录,但是也有另外一些文件类型:
(1) 普通文件(regular file) 。这是最常见的文件类型,这种文件包含了某种形式的数据。至
于这种数据是文本还是二进制数据对于内核而言并无区别。对普通文件内容的解释由处理该文
件的应用程序进行。
(2) 目录文件(directory file) 。这种文件包含了其他文件的名字以及指向与这些文件有关信
息的指针。对一个目录文件具有读许可权的任一进程都可以读该目录的内容,但只有内核可以
写目录文件。
(3) 字符特殊文件(character special file) 。这种文件用于系统中某些类型的设备。
(4) 块特殊文件(block special file) 。这种文件典型地用于磁盘设备。系统中的所有设备或者
是字符特殊文件,或者是块特殊文件。
( 5 ) F I F O 。这种文件用于进程间的通信,有时也将其称为命名管道。1 4 . 5
文档评论(0)