杂项之《unix 高级环境编程》中的概念理解

本文详细介绍了Unix系统中的核心概念,包括目录、目录项、文件属性、路径名、工作目录、文件描述符、标准输入输出错误以及进程、用户ID、组ID等。讨论了系统调用、ISO C标准、POSIX接口以及单一UNIX规范,为Unix环境编程提供了深入理解。
摘要由CSDN通过智能技术生成

1、目录

目录是一个包含目录项的文件。

2、目录项

逻辑上,可以认为每个目录项包含一个文件名,同时包含该文件的属性信息。

3、文件属性

文件属性是指

  • 文件的类型
  • 文件的大小
  • 文件的所有者
  • 文件的权限(其他用户是否可以访问)
  • 文件的最后修改时间

注意:
stat 和 fstat函数返回一个文件属性的 结构(这个结构的作用是描述文件的信息。)

目录项逻辑上与实际磁盘存储是不同的。大多数的unix文件系统并不在目录项中存储文件的属性信息,这是因为当一个文件有多个硬链接时,很难保持多个属性副本之间的同步。

4、文件名

目录中的各个名字称为文件名。

创建目录时会创建两个特殊的文件名:. 和 . .。一个代表当前目录,一个代表父目录。根目录没有父目录,因此根目录的.和. .代表的是同一个目录。

5、路径名

由斜线分隔的一个或多个文件名组成的序列 构成路径名。

  • 以斜线开头的路径名称为绝对路径名。
  • 否则称为相对路径名。

注意:文件系统的根的名字/ 是一个特殊的绝对路径名,它不包含文件名。

6、工作目录(当前工作目录)

每个进程都有一个工作目录,也称为当前工作目录。

  • 所有相对路径名都是从工作目录开始解释
  • chdir函数可以改变一个进程的工作目录

7、起始目录

登录时,工作目录设置为起始目录。该起始目录从口令文件中相应的用户登录项获得。

8、文件描述符

文件描述符通常是一个非负整数,内核用其标识一个文件。

9、标准输入、标准输出、标准错误

每当运行一个新程序,shell为其打开三个文件描述符,即上述三个。这三个文件一般连接至终端。但是可以通过重定向定向到一个文件中。

linux中万物皆文件,那么键盘输入是文件、屏幕输出也是文件,这时标准输入输出。记录错误信息也是输出到屏幕上,但是起了另外一个名字,叫标准错误。

标准输入的文件描述符为:0 ,定义的常量的名字为 STDIN_FIFONO
标准输出的文件描述符为:1,定义的常量的名字为 STDOUT_FIFONO

10、文件IO

不带缓冲区的IO。

11、标准IO

带缓冲区的IO。

12、出错时,函数的返回值大部分为-1

13、程序

程序是一个存储在磁盘上的某个目录中的可执行文件。

内核使用exec函数将一个程序读入到内存中。

14、进程

程序被执行的实例被称为进程。(正在执行的程序)。

15、进程ID

UNIX系统确保每一个进程都有唯一的数字标识符,这个数字标识符称为进程ID。
进程ID总是一个非负的整数。

16、用户ID

口令文件登录项中的用户ID是一个数值,系统用以向标识各个用户。

  • 系统管理员确定一个用户的名字时,也确定一个用户的ID
  • 用户不能更改其ID
  • 通常每个用户都有一个唯一的ID

ID为0的用户是根用户。如果一个进程具有超级用户(根用户)特权,则大多数权限检查将不再执行。
某些操作系统的功能只向根用户提供。

17、组ID

组ID也是在系统管理员创建新用户时确定的。

  • 同组的成员可以共享一些资源(比如文件)
  • 组文件(/etc/group) 将组名映射成组ID
  • 存储组ID和用户ID需要4个字节。

注意:在操作系统看来,组ID和用户ID是数字的话比较方便。但是对于我们程序员来说,使用文字描述更加方便。因此,这里就会存在一个映射关系。口令文件中包含了用户ID和用户名的映射。而组文件中则包含了组ID和组名的映射。

18、附属组ID

一个用户可以同时属于多个组,除了创建用户时分配的组ID以外的组ID称为附属组ID。

19、系统调用

所有操作系统都提供许多服务的入口点,程序通过入口点向内核请求服务。各个版本的UNIX实现都提供良好定义、数量有限、直接进入内核的入口点,这些入口点被称为系统调用。

linux 3.2.0 提供了380个系统调用。

系统调用接口 总是在《UNIX程序员手册》的第2部分中说明,是用C语言定义的,与具体的系统如何调用一个系统调用的实现技术无关。

20、 ISO C

c语言的标准,将库分为了 24个区。

21、 POSIX

可移植操作系统接口。 操作系统的标准,目的是提高代码在不同平台的移植性,因此可能不同操作系统都支持这个POSIX。

22、Single UNIX Specification (单一unix规范)

它是POSIX的一个超集。

23、XSI

XSI是一个标准,其中描述了POSIX的X/Open POSIX中的可选接口,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值