阅 读 文 章

在UNIX下对文件与目录进行编程

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(sdccf) | 时间:2007-05-27 | 浏览:人次 ]


作者:wwwunix

近来,随着UNIX系统的不断普及,使用UNIX系统的单位和个人也越来越多,特别是Linux的推出,更是风靡全球。基于UNIX系统的编程也愈显重要。本文以一个简单的程序为例,说明怎样在UNIX系统下对文件和目录进行编程。该例是一个类似于UNIX系统命令ls的程序,用于列出指定的目录中所有文件和子目录并计算出指定目录所用的磁盘空间。

UNIX文件系统简介 
文件是通过操作系统来管理的。文件的结构以及命名、存取、使用、保护和实现方法都是UNIX系统中的重要内容。总体上,UNIX系统中处理文件的那部分称为文件系统。同DOS类似,UNIX中的文件系统被组织成树状结构。

UNIX中的文件和目录通过一个9比特的保护码来进行保护。保护码分成三个3比特的域,分别对应着文件主、同组用户和其他用户。每个域有一位标识读权限,一位标识写权限,一位标识执行权限,这三位即rwx位。

在UNIX文件系统中通常包含如下文件类型:

普通文件:一个文件包含所有用户放在其中的信息。它可以被认为是一个字节序列。它与DOS及WINDOWS系统不同,对于每个文件都具有一定的读写权限。 
目录:目录提供了文件名称与文件自身之间的映射,由此使得文件系统上的一个结构被作为一个整体对待。一个目录可包含文件,也可以包含子目录,这些子目录同样可以包含更多的文件和子目录。一个目录在被读的时候,它的行为完全像一个普通文件,但它不能被没有权限的用户程序访问。 
特殊文件:特殊文件是UNIX文件系统中最有特色的地方之一。每个I/O设备(磁盘驱动器、终端等)都与一个这样的文件有关。对特殊文件的操作和普通文件一样,但它引发了对相关设备的操作。特殊设备文件的实体保存在目录/dev中。 
符号链接文件:一个符号链接在行为上就像指向另一个文件的指针,这有点像C语言中的指针。在文件系统中,实现这一点是建立一个带有链接名称的文件,该链接指向文件的路径名。 
I标识号,I列表和I节点:一个目录是由一系列结构组成的,每个结构包含有一个文件名和一个指向文件自身的指针,该指针是一个整数,称为文件的I标识号。当文件被访问时,它的I标识号用来作为索引打开一个系统表(I列表),系统表中存放着文件(I节点)的实体。I节点中包含了如下对文件的描述信息: 
.文件自身的用户和用户组ID

.文件的保护码

.文件内容所在的物理磁盘地址

.文件的大小

.最后一次I节点改变的时间,最后一次使用和最后一次修改的时间

.连接该文件的次数,即它出现在其它目录中的次数

.一个指明文件类型的标记(目录、普通文件或特殊文件)

有关的系统调用介绍 
lstat系统调用:这是一个非常有用的系统调用,用来获取存储在一个I节点上的信息。它接受两个参数:一个字符串指针,指向说明一个文件的路径名;另一个是指向stat结构的指针,在这个结构中,存放着有关这个文件的信息。Stat结构包括以下成员: 
st_mode:这个字段包含文件类型和它所具有的访问权限 
st_ino:这个字段在一个给定的文件系统中唯一的标识了这个文件

st_dev:这个字段唯一地标识了包括这个文件的文件系统

st_rdev:如果I节点是一个特殊设备文件,则这个字段标识设备的类型

st_nlink:文件链接的个数

st_uid:文件属主的用户ID

st_gid:文件的用户组的组ID

st_size:文件的字节数

st_atime:文件数据最近一次被访问的时间

st_mtime:文件数据最近一次被更改的时间

st_ctime:文件状态最近一次被修改的时间

opendir:它打开一个指定的目录,并返回一个DIR类型的指针。DIR数据类型包含如下两个元素: 
d_ino:文件I标识号,如果文件被删除,则d_ino为0 
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 编程 进行 目录 文件 一个 系统 包含 程序 UNIX 指定

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.