UNIX基础知识介绍

一、文件和目录

1.文件系统

  • UNIX文件系统是目录和文件的一种层次安排,目录的起点称为根 (root),其名字是一个字符/。
  • 目录(directory)是一个包含目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息。文件属性是:文件类型,文件长度,文件所有者,文件的许可权(例如,其他用户能否能访问该文件),文件最后的修改时间等。

2.文件名

  • 目录中的各个名字称为文件名(filename)。不能出现在文件名中的字符只有两个,斜线 (/)和空操作符(null)
  • 当创建一个新目录时,自动创建了两个文件名: . (称为点)和. . (称为点-点)。点引用当前目录,点-点则引用父目录。在最高层次的根目录中,点 -点与点相同。

3.路径名

  • 0个或多个以斜线分隔的文件名序列 (可以任选地以斜线开头)构成路径名(pathname),以斜线开头的路径名称为绝对路径名(absolute pathname),否则称为相对路径名(relativepathname)。

4.工作目录

  • 每个进程都有一个工作目录 (working directory,有时称为当前工作目录 (current working directory))。所有相对路径名都从工作目录开始解释。

5.起始目录

  • 登录时,工作目录设置为起始目录(home directory),该起始目录从口令文件的登录项中取得。

二、输入和输出

1.文件描述符

  • 文字描述符是一个小的非负整数,内核用以标识一个特定进程正在存访的文件。当内核打开一个现存文件或创建一个新文件时,它就返回一个文件描述符。当读、写文件时,就可使用它。

2.标准输入、标准输出和标准出错

  • 按惯例,每当运行一个新程序时,所有的 shell都为其打开三个文件描述符:标准输入、标准输出以及标准出错。

3.不用缓存的I/O

  • 函数open、read、write、lseek以及close提供了不用缓存的I/O。这些函数都用文件描述符进行工作。

4.标准I/O

  • 标准I / O函数提供一种对不用缓存的I / O函数的带缓存的界面。

三、程序和进程

1.程序

  • 程序(program)是存放在磁盘文件中的可执行文件。使用 6个exec函数中的一个由内核将程序读入存储器,并使其执行。

2.进程和进程ID

  • 程序的执行实例被称为进程(process)。本书的每一页几乎都会使用这一术语。某些操作系统用任务表示正被执行的程序。
  • 每个UNIX进程都一定有一个唯一的数字标识符,称为进程 ID(process ID)。进程I D总是一非负整数。

3.进程控制

  • 有三个用于进程控制的主要函数:fork、exec和waitpid(exec函数有六种变体,但经常把它们统称为exec函数)。

四、ANSI C

1.函数原型

  • 头文件<unistd.h>包含了许多UNIX系统服务的函数原型,例如已调用过的read,write和getpid函数。函数原型是ANSI C标准的组成部分。

2.类属指针dd

  • ANSI C使用void *作为类属指针来代替 char *。
  • 函数原型和类属指针的组合消去了很多非ANSI C编辑程序需要的显式类型强制转换。

3.原始系统数据类型

  • 前面所示的getpid函数的原型定义了其返回值为pid_t类型,这也是POSIX中的新规定。UNIX的早期版本规定此函数返回一整型。与此类似,read和write返回类型为size_t的值,并要求第三个参数的类型是size_t。以_t结尾的这些数据类型被称为原始系统数据类型。

五、出错处理

  • 当UNIX函数出错时,往常返回一个负值,而且整型变量errno通常设置为具有特定信息的一个值。
  • 文件<errno.h>中定义了变量errno以及可以赋与它的各种常数。

六、用户标识

1.用户ID

  • 口令文件登录项中的用户ID(user ID)是个数值,它向系统标识各个不同的用户。系统管理员在确定一个用户的登录名的同时,确定其用户ID。用户不能更改其用户ID。通常每个用户有一个唯一的用户ID。

2.组ID

  • 口令文件登录项也包括用户的组ID(group ID),它也是一个数值。组 ID也是由系统管理员在确定用户登录名时分配的。一般来说,在口令文件中有多个记录项具有相同的组 ID。在UNIX下,组被用于将若干用户集合到课题或部门中去。这种机制允许同组的各个成员之间共享资源(例如文件)。

3.添加组ID

  • 除了在口令文件中对一个登录名指定一个组ID外,某些UNIX版本还允许一个用户属于另外一些组。

七、信号

  • 信息是通知进程已发生某种条件的一种技术。例如,若某一进程执行除法操作,其除数为0,则将名为SIGFPE的信号发送给该进程。

八、UNIX时间值

  • 长期以来,UNIX系统一直使用两种不同的时间值:
    • 日历时间
    • 进程时间
  • 当度量一个进程的执行时间时,UNIX系统使用三个进程时间值:
    • 时钟时间
    • 用户CPU时间
    • 系统CPU时间

九、系统调用和库函数

  • 所有的操作系统都提供多种服务的入口点,由此程序向内核请求服务。各种版本的UNIX都提供经良好定义的有限数目的入口点,经过这些入口点进入内核,这些入口点被称为系统调用(system call)。系统调用是不能更改的一种UNIX特征。

参考文献《UNIX环境高级编程》

发布了20 篇原创文章 · 获赞 8 · 访问量 5581

猜你喜欢

转载自blog.csdn.net/weixin_44816732/article/details/104185816