文件系统

  • 所有文件的起点是根目录 root
  • 而目录(directory)是一个 包含目录项的文件,每个目录项都包含一个文件名以及该文件属性信息
    • 例如 文件类型(普通文件还是目录)、文件大小、文件所有者、文件权限(其他用户是否可以访问该文件)

工作目录

  • 每一个进程都有一个工作目录(working directory),有时候称其为当前工作目录(current working directory)。所有相对路径都从工作目录开始解释。
  • 进程可以用 chdir函数改变其工作目录。

shell

  • shell 本质上就是一个 命令行解释器
  • 作用:读取用户输入,执行命令

输入与输出

  • 文件描述符 (file descriptor)
    • 形式:通常是一个 小的非负整数
    • 作用:用以标识一个特定进程正在访问的文件
    • 返回:当内核打开一个现有文件或者创建一个新文件时,就会返回一个文件描述符
  • 标准输入(standard input)、标准输出(standard output)、标准错误(standard error)
    • shell运行一个新程序时,都会为新程序打开三个文件描述符标准输入标准输出标准错误,若是不做特殊处理,三个描述符都链接向终端
    • 例如:将ls命令重定向到 file.list 文件中
      ls > file.list
      
  • 不带缓冲的I/O
    • 以下函数提供不带缓冲的I/O
      • open、read、write、lseek、close(他们也都使用文件描述符)

标准I/O

  • 作用:为那些不带缓冲区的 I/O函数 提供了一个带缓冲的接口
  • 例如:我们最熟悉的标准 I/O函数 是printf(凡是用到这个函数,都会include <stdio.h>文件,这个文件包含在 apue.h文件中,而 aque.h文件包括了所有标准 I/O函数 原型)。