X

曜彤.手记

随记,关于互联网技术、产品与创业

  1. Chapter 1 - History and Standards
  2. Chapter 2 - Fundamental Concepts

TLPI 读书笔记(第 1-2 章)

「The Linux Programming Interface」,内容如题。

Chapter 1 - History and Standards

(略)

Chapter 2 - Fundamental Concepts

  1. Page 26Linux 下的用户和组:
  • 用户信息:*/etc/passwd*;
    • 登录名;
    • 用户 ID;
    • 第一个所属组 ID;
    • 初始 Home 目录位置;
    • 登录时的默认 Shell;
    • (可选)加密后的用户登录密码。
  • 组信息:*/etc/group*;
    • 组名称;
    • 组 ID;
    • 包含的用户名列表。
  • 超级用户:一般其用户 ID 为 0,用户名为 “root”。
  1. Page 27Linux 文件系统相关元素:
  • 文件类型:普通(plain / regular)文件、设备、管道、套接字、目录,以及符号链接;
  • 文件夹:其内容采用类似“文件名表”的形式进行组织,表中的每一个文件名都有一个与其相对应的实体文件引用
  • 链接(硬链接):即上述“文件名+实体文件指针”的组合。文件可以有多重链接,即一个实体文件可对应多个名字;
  • 符号链接(软链接):对应文件名表中的一个“文件名+实体文件指针”的组合,而该文件指针所指向文件内包含了源文件实体的路径。当一个路径名在系统调用中被指定时,内核通常会自动解除对路径名中每个符号链接的引用,用它所指向的文件名来替换它。如果一个符号链接的目标本身是一个符号链接,则这个过程可能会递归发生。内核对解除引用的数量进行了限制,以处理符号链接的循环链的可能性。如果一个符号链接指向一个不存在的文件,它就被称为悬空链接(dangling link);
  • 文件名:大多数 Linux 文件系统支持最长 255 字符的文件名。可移植文件名字符集(portable filename character set)包含 “[-._a-zA-Z0-9]”,该字符集在 SUSv3 中定义。
  • 路径名:相对路径、绝对路径;
  • 当前工作目录(CWD):每个进程都有一个“当前工作目录”,一个进程从其父进程继承其“当前工作目录”。Unix 下的 chdir 系统调用可用于修改进程的 CWD;
  • 文件所有权及权限:每个文件都有一个相关的用户 ID 和组 ID,定义了文件的所有者和所属的组。三类用户(所有者、同组、其他),三个权限位(读、写、执行)。
  1. Page 30Linux 文件 I/O 模型:
  • I/O 普遍性universality):同一个系统调用(open \ read \ close 等)可被用在所有类型的文件上。内核会将应用的 I/O 请求翻译成适当的文件系统或设备驱动程序操作,并在目标文件或设备上执行 I/O。内核本质上仅提供一种文件类型:一个连续的字节流。Unix 系统没有文件结尾字符,文件的结尾是由一个没有返回数据的读操作来标识的。
  • 文件描述符:本质是正整数。默认情况下,一个进程在由 Shell 启动时会继承三个特殊的文件描述符:stdin(0)、stdout(1)、stderr(2);
  • stdio 库stdio 库中的 I/O 函数fopen / fclose / scanf / printf / fgets / fputs 等)构建于系统调用open / close / read / write之上

(待更新)




评论 | Comments


Loading ...