前目录,点-点则引用文目录。在最高层次的根目录中,点-点和点相同。
某些Unix文档系统限制文档名的最大长度为14个字符,BSD版本则将这种限制扩展
为255个字
符。-
路径名(Palhname)
0个或多个以斜线分隔的文档名序列(能够任选地以斜线开头)构成路径名,以斜线
开头的路
径名称为绝对路径名,否则称为相对路径名。
实例
不难列出一个目录中任何文档的名字,程式11是ls(1)命令的主要实现部分
程式11〓列出一个目录中的任何文档
ls(1)这种表示方法是Unix的惯用方法,用以引用Unix手册集中的一个特定项。他
引用第一
部分中的ls项,各部分通常用数字1至8表示,在每个部分中的各项则按字母顺序排
列。在全
书中,我们都假定您有一份您所使用的Unix系统的手册。
较早的Unix系统把8个部分都集中在一本Unix程式手册中,现在的趋势是把这些部
分分别按
排在不同的手册中:一本是由用户使用的,一本是由程式员使用的,一本是由系统
管理员使
用的等等。
某些Unix系统把一个给定部分中的手册页又用一个大写字母进一步分成若干小部分
,例如,
AT&T〔1990e〕中的任何标准I/O函数都被指明在3s部分中,例如fopen(3s)。
某些Unix系统,例如以Xenix为基础的系统,不同数字将手册分成若干部分,代之
,他们用C
表示命令(第1部分),S表示服务(通常是第2、3部分)等等。
假如您有联机手册,则阅看ls命令手册页的方法一般是:
man 1 ls
程式11只打印一个目录中各个文档的名字,不显示其他信息,如若该源文档名为
mylsc,
则我们能够用下面的命令对其进行编辑,编辑的结果送入系统默认名为aout的可
执行文档
名:
cc mylsc
某种样本输出是:
$ aout /dev
MAKEDEV
console
tty
mem
kmem
null
printer
$ aout /var/spool/mqueue
can′t open /var/spool/mqueue:Permission denied
$ aout /dev/tty
can′t open /dev/tty:Not a directory
在全书中,我们都将以这种方式表示我们输入的命令连同其输出:我们输入的字符
以这种字
体表示程式输出则以另一种字体表示。假如我们欲对输出添加注释,则以表示注释
,在我们
输入之前的美元符号($)是shell打印的提示符,我们总是将shell提示符显示为$。
注意,列出的目录项不是以字母序排列的,ls命令本身则一般以字母序列出目录项
。在这20
行程式中,有很多细节能够考虑:
·首先,其中包含了一个我们自己的头文档ourhdrh。在本书中,几乎每一道程
序都包含
此
头文档。他包含了某些标准系统头文档,定义了许多常数及函数原型,这些都将用
于本书的
各个例子中,此头文档包含在附录B中。
·main函数的说明使用了ANSI C标准所支持的新风格。(在下一章中,我们将对AN
SI C作更
多说明。)
·我们取命令行的第1个参数argv〔1〕作为要列表的目录名。在第七章中,我们
将说明mai
n函数是如何被调用的,程式如何存取命令行参数和环境变量。
·因为各种不同Unix系统的目录项的实际格式是不相同的,所以我们使用函数ope
ndir,read
dir和closedir处理目录。
·opendir函数返回指向DIR结构的指针,并将该指针传向readdir函数。我们并不
关心DIR结
构中包含了什么。然后,我们在循环中调用readdir,以读每个目录项。他返回一
个指向dir
ent结构的指针,而当目录中已无目录项可读时则返回null指针。我们在dirent结
构中取出
的只是每个目录项的名字(d[CD#*2]name)。使用该名字,我们此后就可调用stat函
数(42
节)以决定该文档的任何属性。
·调用了两个我们自编的函数对错误进行处理:err-sys和err-quit。我们从上面
的输出中
能够看到,err-sys函数打印一条消息,说明碰到了什么类型的错误。("Permissi
on denie
d"或"Not a directory"("许可权拒绝"或"不是个目录"。))
这两个出错处理函数也在附录B中说明,我们也将在17节中更多地叙述出错处理
。
·当程式将结束时,他以参数O调用函数exit。函数exit终止一道程式。按惯例,
参数O的意
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




