第七章:
fopen()包括一个FILE结构体,文件描述符fd,一个fbuf[BLKSIZE]和一些控制变量
fread(ubuf,size,nitem,fp)将nitem个size字节读取到ubuf,通过:把数据从FILE的fbuf复制到ubuf上,若足够则返回
若fbuf没有更多数据,则发出(fd,fbf,BLKSIZE)系统调用,将文件数据块从内核读取到fbuf是,然后将数据复制到ubuf直到无数据可复制或数据足够
fwrite(ubuf,size,nitem,fp)将数据从ubuf复制到fbuf
Block:
B0:引导块,文件系统不会使用它。它用于容纳从磁盘引导操作系统的引导程序。
B1:超级块,用于容纳关于整个文件系统的信息。
B2:块组描述符块。EXT2将磁盘块分为几个组。每个组有8192个块(硬盘上的大小为32k)。每组用一个块组描述符结构体描述。
B8:块位图。位图用于分配和回收项。
B9:索引节点位图。一个索引节点就是用于代表一个文件的数据结构。
B10:索引(开始)节点块
第八章
一些基本的系统调用函数:
int mkdir(char *pathname, int privilege);创建以pathname为名的路径,其权限为privilege。返回-1为失败,返回1为成功。
int rmdir(char *pathname);移除目录(此目录必须为空目录)。
int chdir(char *pathname);更改当前路径到pathname。
char *getcwd(char *buf,size_t size);将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小。
int access(const char *pathname, int mode);access函数用来判断指定的文件或目录是否存在。
int chmod(char *path, mode_t mode);更改某个文件的权限。
int chown(char *name, int uid, int gid);更改某个文件的所有者。
int link(char *oldpath, char *newpath);链接新文件名到旧文件名(硬链接)
int unlink(char *pathname);减少文件链接数,如果链接数为0,就删除文件
int symlink(char *oldpath, char *newpath);为文件创建一个符号链接
int rename(char *oldpath, char *newpath);重命名文件
int utime(char *pathname, struct utimebuf *time);更改文件访问时间和修改时间。
链接文件

(1) 硬链接文件
命令 ln oldpath newpath创建从newpath到oldpath的硬链接。
硬链接文件会共享文件系统中相同的文件表示数据结构(索引节点)。文件链接数会记录链接到同一索引节点的硬链接数量。硬链接仅适用于非目录文件。否则,它可能会在文件系统名称空间中创建循环,这是不允许的。
(2) 符号链接文件
软链接:命令ln -s oldpath newpath创建从newpath到oldpath的软链接。
软链接适用于任何文件,包括目录。