实验报告(六)文件系统
一、实验目的
通过学习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
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 目录名称”显示结果一致。
(二)实验过程