快速业务通道

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

作者 佚名技术 来源 操作系统 浏览 发布时间 2012-05-21

近来,随着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
d_name:此目录下包含的文件名

readdir:它读出指定目录中的一个文件或子目录,并将指针移到下一个

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号