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中的可选接口,