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) | 回转目录使其从头开始读取 |