Mere data makes a man. A and C and T and G. The alphabet of you. All from four symbols. I am only two: 1 and 0.
We have no difference
文件系统是系统对文件的存放排列方式,不同的文件系统关系到数据如何在磁盘进行存储,本文将针对文件系统相关内容进行总结。
文件描述符1
概念
对于一个内核,一个打开的文件对应一个文件描述符(非负整数),我们通过这个文件描述符对文件进行读写访问操作。每个Linux系统都有三个标准的POSIX文件描述符:
POSIX Constants Name | File Descriptors | Description |
---|---|---|
STDIN_FILENO | 0 | Standard input |
STDOUT_FILENO | 1 | Standard output |
STDERR_FILENO | 2 | Standard error |
有三个系统文件表,分别是文件描述符表、文件表和节点表。一个文件描述符映射至一个打开的文件表,这个文件表包含了文件相关的信息,包括读写性偏移量等,然后这个表又指向实际的文件节点表。在上面这张图中,文件描述符0和2实际指向的是同一个文件,且都为只读;而1和4以不同的读写权限指向同一个文件。3是一个已经被关闭的描述符,不指向任何文件。
多进程下的文件描述符
当使用fork创建多进程时,子进程会复制父进程的文件描述符,创建自己的文件描述符表,但是指向相同的文件,所以父子进程的fd表是相互独立的。
重定向
文件描述符可以被重定向(复制),
系统调用
与重定向相关的系统调用为dup
和dup2
。
dup
dup的函数原型如下:
1 |
|
其功能为分配一个文件描述符,指向oldfd所指向的文件,新描述符是调用进程文件描述表中最小可用的文件描述符。例如有下面一段代码:
1 | int fd,fd1; |
其实际意义如下:
这两个文件描述符互不影响。
不同文件系统
Windows支持的文件系统
win支持三种文件系统,分别是NTFS、FAT32以及exFAT,下面将对其进行一些总结
NTFS
特性
- 使用最广泛
- 具有日志功能
- 无文件大小限制
- 兼容性较差
FAT32
特性
- 比较老,但是兼容性比较好
- 只支持最大单文件大小容量4GB
文件系统比较
Linux支持的文件系统
linux的文件系统一般为ext2、ext3以及最新的ext4
ext3
特性
- 允许日志
双系统相互访问
如果电脑上安装了双系统,那么意味着磁盘将会以不同的文件系统进行划分,有时我们会有跨系统访问硬盘的需求,本节将解决双系统相互访问不同文件系统的硬盘的问题。
Windows下访问EXT2/3/4
下载Linux Reader,直接即可访问linux的硬盘