实验六模板(文件系统) 下载本文

实验报告(六)文件系统

一、实验目的

通过学习Linux操作系统文件和目录操作命令的使用,以及基于目录相关的系统调用函数的编程,加深理解操作系统文件管理的相关概念和原理。

二、实验内容、过程与分析 (一) 实验内容

1、练习使用文件相关命令

(1)命令“ls -l ”查看当前目录中文件详细信息。 “-l” 选项使得ls命令显示详细信息,示例如下。

每一项的说明如下。注意第二项中的1,表示硬链接数量。

(2)硬链接和符号链接

命令cd //进入用户主目录

命令pwd //显示当前所在目录或工作目录 命令mkdir playground //创建目录 命令cd playground

命令mkdir dir1 dir2 //创建两个目录 命令touch fun //创建空文件fun

命令ls -l fun //查看文件fun详细信息,注意观察在创建或删除硬链接前后,fun及其硬链接文件的链接数的变化

命令ln fun fun-hard1 //为文件fun创建硬链接fun-hard1 命令ls -l //查看fun和fun-hard1详细信息 命令ln fun fun-hard2 //创建硬链接

命令ls -l //查看fun、fun-hard1、fun-hard2详细信息 删除硬链接:命令rm fun-hard2

命令ls -l //查看fun、fun-hard1详细信息

命令cp fun fun2 //复制文件

命令ln -s fun2 fun2-sym1 //为文件fun2创建符号链接(也称为软链接)fun2-sym1 命令ln -s fun2 dir1/fun2-sym2 //创建符号链接 命令ln -s fun2 dir2/fun2-sym2 //创建符号链接

通过命令“ls -l”查看fun2、fun2-sym1、dir1/fun2-sym2、dir2/fun2-sym2详细信息。符号链接本身是一种特殊文件,此文件的内容是所指向的文件的路径和文件名。

2、编写应用程序,查看目录内容 (1)学习《UNIX环境高级编程》(作者:W. Richard.Stevens,第二版中文版)第4章4.21小节读目录。

(2)编写程序hello.c 命令gedit hello.c 程序hello.c

#include #include #include

int main(int argc, char *argv[]) {

DIR *dirp;

struct dirent *dp;

dirp = opendir(argv[1]);//打开目录流

while ( (dp=readdir(dirp) ) != NULL )//读取目录中的下一个目录项 {

printf(“inode number=%d\\t”, dp->d_ino);//输出目录项中的文件inode号 printf(“name=%s\\n”, dp->d_name);//输出目录项中的文件名称 }

closedir(dirp);//关闭目录流 return 0; }

(3)编译运行

编译cc hello.c -o hello 执行程序“./hello 目录名称”,例如显示当前目录内容:“./hello .”(注意:“.”表示当前目录)

运行命令“ls 目录名称”,查看目录内容是否和“./hello 目录名称”显示结果一致。

(二)实验过程