欢迎来到天天文库
浏览记录
ID:52782609
大小:405.83 KB
页数:7页
时间:2020-03-30
《实验5:Linux文件操作.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告5课程名称:Linux程序设计实验名称:Linux文件操作学生姓名:班级:学号:指导老师:成绩:一、实验目的1.掌握系统函数system、chmod、stat的应用;2.掌握常用文件类型判断的程序设计;3.掌握有关文件目录操作函数scandir等的应用。二、实验任务与要求1.应用函数system、chmod、stat获取文件属性的程序设计;2.使用文件属性st_mode判断文件类型的程序设计;3.文件目录操作函数scandir等的程序设计。三、实验工具与准备计算机PC机,LinuxUbuntu操作系统四、实验步骤与操作指导1.
2、调试下列程序。操作步骤步骤1编辑源程序代码。[root@localhostroot]#vi5-1.c程序代码如下:/*5-1.c获取“/etc/passwd”文件的大小*/#include#include/*文件预处理,包含stat函数库*/intmain()/*C程序的主函数,开始入口*/{structstatbuf;system("vim/home/liu");chmod("/home/liu",S_IRUSR
3、S_IWUSR
4、S_IRGRP
5、S_IROTH);stat("/home/l
6、iu",&buf);printf("“/etc/passwd”文件的大小是:%d",buf.st_size);return0;}步骤2编译程序。[root@localhostroot]#gcc-o5-15-1.c步骤3执行程序。[root@localhostroot]#./5-1问题思考:(1)修改程序,能够显示文件权限的所有者及最后一次文件修改的时间;(2)终端命令ls有使用格式:“ls-l”,请修改程序,程序的功能尽可能接近此命令文件。72.程序设计题。设计一个程序,要求判断“/etc/passwd”的文件类型。提示:使用st
7、_mode属性,可以使用几个宏来判断:S_ISLNK(st_mode)是否是一个连接,S_ISREG是否是一个常规文件,S_ISDIR是否是一个目录,S_ISCHR是否是一个字符设备,S_ISBLK是否是一个块设备,S_ISFIFO是否是一个FIFO文件,S_ISSOCK是否是一个SOCKET文件。最后一次文件修改的时间3.调试下列程序。程序的功能是打印系统目录“/etc/rc.d”下所有的文件和子目录的名字。操作步骤步骤1编辑源程序代码。[root@localhostroot]#vi5-2.c程序代码如下:/*5-2.c程序:读取系
8、统目录文件“/etc/rc.d”中所有的目录结构*/#include#include#include#includeintmain(){DIR*dir;structdirent*ptr;dir=opendir("/etc/rc.d");printf("/etc/rc.d目录中文件或子目录有:");while((ptr=readdir(dir))!=NULL){printf("%s",ptr->d_name);}closedir(dir);}问题
9、思考:(1)修改程序,要求读取“/etc”目录下所有的目录结构,并依字母顺序排列。#include考虑以下语句:scandir("/etc",&namelist,0,alphasort);程序段:while(n--){printf("%s",namelist[n]->d_name);free(namelist[n]);}4.调试并分析下列程序的结果。程序的功能是用递归的方法列出某一目录下的全部文件的大小和文件夹及创建日期,包括子文件和子文件夹。操作步骤步骤1编辑源程序代码。[root@localhostroot
10、]#vi5-3.c程序代码如下:#include#include7#include#include#include#include#includechar*wday[]={"日","一","二","三","四","五","六"};voidlist(char*name,intsuojin){DIR*dirname;structdirent*content;structstatsb;struc
11、ttm*ctime;inti;if((dirname=opendir(name))==NULL){printf("该目录不存在");return;}chdir(name);/*改换工作目录*/while((conte
此文档下载收益归作者所有