版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络安全顾问面试指南
- 网络安全防护数据加密与防火墙配置指南
- 生产管理岗位招聘面试实战策略
- 2025重庆綦城人力资源管理有限公司招聘公益性岗位人员2人考试笔试参考题库及答案解析
- 2026年安徽老年开放大学兼职教师招聘考试笔试备考题库及答案解析
- 2025年宁波北仑区统计局街道企业化专职统计人员招聘1人考试笔试备考题库及答案解析
- 2026年常州纺织服装职业技术学院单招职业适应性测试题库参考答案详解
- 2026年德阳科贸职业学院单招职业倾向性考试题库附答案详解
- 2026年广西工业职业技术学院单招职业适应性测试题库及答案详解一套
- 2026年揭阳职业技术学院单招职业倾向性考试题库及完整答案详解1套
- 小学下雪安全班会课
- 铁路安全员c证考试题库单选题100道及答案
- 天津市滨海新区2023-2024学年四年级上学期数学期末试卷
- 孕期胆囊炎的临床特征
- 博物馆教育活动策划
- 申报职称答辩
- 《三国志》导读学习通超星期末考试答案章节答案2024年
- 地 理跨学科主题学习 美化校园课件-2024-2025学年七年级地理人教版上册
- 广告设计及广告制作服务 投标方案(技术方案)
- 运输顺槽掘进作业规程
- GB/T 44373-2024智能网联汽车术语和定义
评论
0/150
提交评论