FileSystem - lichuncen/lichuncen.github.io GitHub Wiki

Linux 系统根目录下面的目录名

  • /bin,它是重要的二进制应用程序,包含二进制文件,系统的所有用户使用的命令都在这里
  • /boot,启动包含引导加载程序的相关文件
  • /dev,包含设备文件,终端文件,USB 或者连接到系统的任何设备
  • /etc,配置文件,启动脚本等,包含所有程序所需要的配置文件,也包含了启动/停止单个应用程序的启动和关闭 shell 脚本
  • /home,本地主要路径,所有用户用 home 目录存储个人信息
  • /lib,系统库文件,包含支持位于 /bin 和 /sbin 下的二进制库文件
  • /lost+found,在根目录下提供一个遗失+查找系统,必须在 root 用户下才能查看当前目录下的内容
  • /media,挂载可移动介质
  • /mnt,挂载文件系统
  • /opt,提供一个可选的应用程序安装目录
  • /proc,特殊的动态目录,用于维护系统信息和状态,包括当前运行中进程信息
  • /root,root 用户的主要目录文件夹
  • /sbin,重要的二进制系统文件
  • /tmp, 系统和用户创建的临时文件,系统重启时,这个目录下的文件都会被删除
  • /usr,包含绝大多数用户都能访问的应用程序和文件
  • /var,经常变化的文件,诸如日志文件或数据库等

挂载mount,允许一个磁盘挂到另一个磁盘上,不用担心文件系统在哪个磁盘上

加锁locking,解决多个进程同时使用同一个文件的情况(竞争条件race condition)。通过POSIX实现不同粒度的加锁,需要指定加锁的文件,起始位置和加锁的字节,分为共享锁和互斥锁。共享锁不能再叠加排他锁;互斥锁不能叠加任何锁。

单个文件的系统调用 描述
fd = creat(name,mode) 一种创建一个新文件的方式。fd文件描述符是一个非负整数,标示了一个打开的文件,指向全局文件表的entry项,包含文件的inode信息、字节位移、访问限制等。默认前三个文件描述符为STDIN 0、STDOUT 1、STDERR 2。
fd = open(file, ...) 打开文件读、写或者读写
s = close(fd) 关闭一个打开的文件
n = read(fd, buffer, nbytes) 从文件中向缓存中读入数据
n = write(fd, buffer, nbytes) 从缓存中向文件中写入数据
position = lseek(fd, offset, whence) 移动文件指针,以便后续对 read 或 write 的调用可以在文件中的任何位置开始,甚至可以超出文件末尾。返回值是更改文件指针后文件中的绝对位置,并不会真正造成磁盘查找,而只是更新内存中的当前文件位置。
s = stat(name, &buf) 获取文件信息,只能对路径进行操作
s = fstat(fd, &buf) 获取文件信息,可以对文件进行操作
s = pipe(&fd[0]) 创建一个shell管道(即伪文件),来缓冲和管道组件之间的数据,并且返回读取或写入缓冲区的文件描述符。
s = fcntl(fd,...) 锁定和解除文件,应用共享锁和互斥锁或其他操作
整体目录和文件系统的系统调用 描述
s = mkdir(path,mode) 创建一个新的目录
s = rmdir(path) 移除一个目录,只有目录为空时才能删除
s = link(oldpath,newpath) 创建指向已有文件的链接
s = unlink(path) 取消文件的链接,当文件最后一个链接被删除时文件也被自动删除
s = chdir(path) 改变工作目录
dir = opendir(path) 打开一个目录读取
s = closedir(dir) 关闭一个目录
dirent = readdir(dir) 读取一个目录项
rewinddir(dir) 回转目录使其从头开始读取
⚠️ **GitHub.com Fallback** ⚠️