# 文件系统：复习题

> 原文：<https://github.com/angrave/SystemProgramming/wiki/Filesystem%3A-Review-Questions>

> 问题编号可能会有变化

## Q1

编写一个使用 fseek 和 ftell 的函数，用'X'替换文件的中间字符

```c
void xout(char* filename) {
  FILE *f = fopen(filename, ____ );

}
```

## Q2

在`ext2`文件系统中，从磁盘读取多少个 inode 以访问文件的第一个字节`/dir1/subdirA/notes.txt`？假设根目录中的目录名和 inode 编号（但不是 inode 本身）已经在内存中。

## Q3

在`ext2`文件系统中，必须从磁盘读取以访问文件`/dir1/subdirA/notes.txt`的第一个字节的最小磁盘块数是多少？假设根目录中的目录名称和 inode 编号以及所有 inode 已经在内存中。

## Q4

在具有 32 位地址和 4KB 磁盘块的`ext2`文件系统中，可以存储 10 个直接磁盘块编号的 inode。要求单个间接表所需的最小文件大小是多少？ ii）双向表？

## Q5

修复下面的 shell 命令`chmod`以设置文件`secret.txt`的权限，以便所有者可以读取，写入和执行该组可以读取的权限，而其他所有人都无权访问。

```
chmod 000 secret.txt 
```