




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告5课程名称: Linux程序设计 实验名称: Linux文件操作 学生姓名: 班级: 学号: 指导老师: 成绩: 一、实验目的1.掌握系统函数system、chmod、stat的应用;2.掌握常用文件类型判断的程序设计;3.掌握有关文件目录操作函数scandir等的应用。二、实验任务与要求1.应用函数system、chmod、stat获取文件属性的程序设计;2.使用文件属性st_mode判断文件类型的程序设计;3.文件目录操作函数scandir等的程序设计。三、实验工具与准备计算机PC机,Linux Ubuntu操作系统四、实验步骤与操作指导1.调试下列程序。 操作步骤步骤1 编辑源程
2、序代码。rootlocalhost root#vi 5-1.c程序代码如下:/*5-1.c 获取“/etc/passwd”文件的大小*/#include<unistd.h>#include<sys/stat.h> /*文件预处理,包含stat函数库*/int main () /*C程序的主函数,开始入口*/struct stat buf;system("vim /home/liu");chmod("/home/liu",S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); stat("/home/liu&q
3、uot;,&buf);printf("“/etc/passwd”文件的大小是:%dn",buf.st_size);return 0;步骤2 编译程序。rootlocalhost root#gcc -o 5-1 5-1.c步骤3 执行程序。rootlocalhost root#./5-1 问题思考:(1)修改程序,能够显示文件权限的所有者及最后一次文件修改的时间;(2)终端命令ls有使用格式:“ls -l”,请修改程序,程序的功能尽可能接近此命令文件。2程序设计题。设计一个程序,要求判断“/etc/passwd”的文件类型。提示:使用st_mode属性,可以使用几个宏
4、来判断:S_ISLNK(st_mode) 是否是一个连接,S_ISREG是否是一个常规文件,S_ISDIR是否是一个目录,S_ISCHR是否是一个字符设备,S_ISBLK是否是一个块设备,S_ISFIFO是否是一个FIFO文件,S_ISSOCK是否是一个SOCKET文件。最后一次文件修改的时间3调试下列程序。程序的功能是打印系统目录“/etc/rc.d”下所有的文件和子目录的名字。操作步骤步骤1 编辑源程序代码。rootlocalhost root#vi 5-2.c程序代码如下: /*5-2.c程序:读取系统目录文件“/etc/rc.d”中所有的目录结构*/#include<stdio.
5、h>#include<sys/types.h>#include<dirent.h>#include<unistd.h>int main()DIR * dir;struct dirent * ptr;dir=opendir("/etc/rc.d");printf("/etc/rc.d目录中文件或子目录有:n");while(ptr = readdir(dir)!=NULL)printf("%sn",ptr->d_name);closedir(dir);问题思考:(1)修改程序,要求读取“/
6、etc”目录下所有的目录结构,并依字母顺序排列。#include<dirent.h>考虑以下语句:scandir("/etc",&namelist,0,alphasort);程序段:while(n-) printf("%sn", namelistn->d_name); free(namelistn);4. 调试并分析下列程序的结果。程序的功能是用递归的方法列出某一目录下的全部文件的大小和文件夹及创建日期,包括子文件和子文件夹。操作步骤步骤1 编辑源程序代码。rootlocalhost root#vi 5-3.c程序代码如下: #
7、include<stdio.h>#include<time.h>#include<linux/types.h>#include<dirent.h>#include<sys/stat.h>#include<unistd.h>#include<string.h>char *wday="日","一","二","三","四","五","六"void list(char *name,
8、int suojin) DIR *dirname; struct dirent *content; struct stat sb; struct tm *ctime; int i; if(dirname=opendir(name)=NULL) printf("该目录不存在n"); return; chdir(name);/*改换工作目录*/ while(content=readdir(dirname)!=NULL) for(i=0;i<suojin;i+) putchar('t'); if(content->d_type=4) printf(&q
9、uot;目录t"); else if(content->d_type=8) printf("文件t"); else printf("其他t"); stat(content->d_name,&sb); ctime=gmtime(&sb.st_mtime); printf("%d年%d月%d日 星期%s %d:%d:%dt",ctime->tm_year+1900, 1+ctime->tm_mon,ctime->tm_mday,wdayctime->tm_wday,ctime-
10、>tm_hour,ctime->tm_min,ctime->tm_sec);printf("%dt",sb.st_size);printf("%sn",content->d_name);/*列出目录或文件的相关信息*/if(content->d_type=4&&strcmp(content->d_name,".")&&strcmp(content->d_name,".") list(content->d_name,suojin+1);/
11、*如果是目录,则递归列出目录里的内容*/ closedir(dirname); chdir(".");/*当该层目录中的文件列完后,返回父目录*/int main(int argc,char *argv)char name256; printf("类型t最后修改时间ttt大小t文件名n"); printf("*n"); if(argc=1) printf("Enter directory name:"); scanf("%s",name); list(name,0); else list(argv1,0); 五、实验结果记录 11(1)1(2)2、3、3(1)4、先用if语句判断输入的是否存在,再用while判断是文件还是目录,列出目录或文件的相关信息。如果是目录,则递归列出目录里的内容,当该层目录中的文件列完后,返回父目录六、实验结果分析1、st_uid是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防分区施工方案(3篇)
- 铜梁拓展公司活动策划方案(3篇)
- 铝板石材施工方案(3篇)
- 观看廉洁影片活动方案策划(3篇)
- 交通管道过路施工方案(3篇)
- 建房封顶施工方案(3篇)
- 北京市朝阳区2023-2024学年七年级上学期期中考试生物考题及答案
- 安徽省芜湖市南陵县2024-2025学年高二上学期第一次月考地理试题含参考答案
- 心理基础考试题目及答案
- 校园美食问答题目及答案
- 电竞行业用户分析
- 建筑防火基础知识
- 首诊负责制度检查分析报告
- 汤小丹《计算机操作系统》官方课件 第四版
- 新药研发方案及计划书模板
- 走近昆曲《牡丹亭》
- 3D打印混凝土材料性能试验方法
- XX学校学校集体备课实施方案细则、方案、计划、制度、总结(全套资料)
- 不良资产项目律师法律尽调报告(模板)
- 医疗设备、器械项目实施方案、服务实施方案
- 非居民金融账户涉税信息尽职调查和信息报送制度
评论
0/150
提交评论