欢迎来到天天文库
浏览记录
ID:34621750
大小:476.76 KB
页数:16页
时间:2019-03-08
《unix 高级环境编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、下载第1章UNIX基础知识1.1引言所有操作系统都向它们运行的程序提供服务。典型的服务有执行新程序、打开文件、读文件、分配存储区、获得当前时间等等,本书集中阐述了UNIX操作系统各种版本所提供的服务。以严格的步进方式、不超前引用尚未说明过的术语的方式来说明UNIX几乎是不可能的(可能也会是令人厌烦的)。本章从程序设计人员的角度快速浏览UNIX,并对书中引用的一些术语和概念进行简要的说明并给出实例。在以后各章中,将对这些概念作更详细的说明。本章也对不熟悉UNIX的程序设计人员简要介绍了UNIX提供的各种服务。1.2登录1.2.1登录名登录UNIX系
2、统时,先键入登录名,然后键入口令。系统在其口令文件,通常是/etc/passwd文件中查看登录名。口令文件中的登录项由7个以冒号分隔的字段组成:登录名,加密口令,数字用户ID(224),数字组ID(20),注释字段,起始目录(/home/stevens),以及shell程序(/bin/ksh)。很多比较新的系统已将加密口令移到另一个文件中。第6章将说明这种文件以及存取它们的函数。1.2.2shell登录后,系统先显示一些典型的系统信息,然后就可以向shell程序键入命令。shell是一个命令行解释器,它读取用户输入,然后执行命令,用户通常用终端,
3、有时则通过文件(称为shell脚本)向shell进行输入。常用的shell有:¥Bourneshell,/bin/sh¥Cshell,/bin/csh¥KornShell,/bin/ksh系统从口令文件中登录项的最后一个字段中了解到应该执行哪一个shell。自V7以来,Bourneshell得到了广泛应用,几乎每一个现有的UNIX系统都提供Bourneshell。Cshell是在伯克利开发的,所有BSD版本都提供这种shell。另外,AT&T的系统V/386R3.2和SVR4也提供Cshell(下一章将对这些不同的UNIX版本作更多说明)。Kor
4、nShell是Bourneshell的后继者,它由SVR4提供。KornShell在大多数UNIX系统上运行,但在SVR4之前,通常它需要另行购买,所以没有其他两种shell流行。本书将使用很多shell实例,以执行已开发的程序,其中将应用Bourneshell和KornShell都具有的功能。2UNIX环境高级编程下载Bourneshell是SteveBourne在贝尔实验室中开发的,其控制流结构使人想起Algol68。Cshell是在伯克利由BillJoy完成的,其基础是第6版shell(不是Bourneshell)。其控制结构很像C语言,它
5、支持一些Bourneshell没有提供的功能,如作业控制,历史机制和命令行编辑。KornShell是DavidKorn在贝尔实验室中开发的,它兼容Bourneshell,并且也包含了使Cshell非常流行的一些功能,如作业控制、命令行编译等。本书将使用这种形式的注释来描述历史,并对不同的UNIX实现进行比较。当我们了解了历史缘由后,采用某种特定实现技术的原因将变得清晰起来。1.3文件和目录1.3.1文件系统UNIX文件系统是目录和文件的一种层次安排,目录的起点称为根(root),其名字是一个字符/。目录(directory)是一个包含目录项的文件
6、,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息。文件属性是:文件类型,文件长度,文件所有者,文件的许可权(例如,其他用户能否能访问该文件),文件最后的修改时间等。stat和fstat函数返回一个包含所有文件属性的信息结构。第4章将详细说明文件的各种属性。1.3.2文件名目录中的各个名字称为文件名(filename)。不能出现在文件名中的字符只有两个,斜线(/)和空操作符(null)。斜线分隔构成路径名(在下面说明)的各文件名,空操作符则终止一个路径名。尽管如此,好的习惯是只使用印刷字符的一个子集作为文件名字符(只使
7、用子集的理由是:如果在文件名中使用了某些shell特殊字符,则必须使用shell的引号机制来引用文件名)。当创建一个新目录时,自动创建了两个文件名:.(称为点)和..(称为点-点)。点引用当前目录,点-点则引用父目录。在最高层次的根目录中,点-点与点相同。某些UNIX文件系统限制文件名的最大长度为14个字符,BSD版本则将这种限制扩展为255个字符。1.3.3路径名0个或多个以斜线分隔的文件名序列(可以任选地以斜线开头)构成路径名(pathname),以斜线开头的路径名称为绝对路径名(absolutepathname),否则称为相对路径名(rel
8、ativepathname)。实例不难列出一个目录中所有文件的名字,程序1-1是ls(1)命令的主要实现部分程序1-1列出一个目录中的所
此文档下载收益归作者所有