




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计一个程序,实现Linux系统中提供的“ls -l”的功能苏州科技学院天平学院操作系统课程设计 报告 设计一个程序,实现Linux系统中提供的“ls -l”的功能 专业年级计算机工程班级1122学号姓名成绩指导教师2013年7月8日7一 设计目的(1)运用学过的汇编语言编写一个程序,实现Linux系统中提供的”ls -l”的功能。(2)加深对”ls -l”命令和相关算法的理解(3)在实验中,加深对程序实现”ls -l”功能的过程的理解二 设计要求 “ls”是查看目录命令,而“ls l”是长格式,除文件名外,还显示文件的类型(d:目录,c:字符型设备,b:块设备,p:命令管道,f:一般文件,l:符号链接,s:嵌套字),权限,硬链接的个数,所有者名,群组名,文件大小,修改时间等详尽信息。设计一个程序,实现Linux系统中提供的“ls -l”的功能。三 设计原理设计标记旗帜lflag,为0则直接显示文件/目录名,不是的话就获取字符的属性,然后打印字符的属性,准备ls的工作,调用mian()函数实现”ls-l”的功能。四 算法实现1)定义标记旗帜,文件指针filename,显示目录下的文件子目录的指针dir2)switch(buf.st_mode & S_IFMT) 是显示字符串的属性的函数,然后用for语句打印文件的读写属性3)int ls_prepare(char *w,int lflag)是ls的准备工作的函数,主要是获取文件及目录的属性给缓冲区4)最后解析命令,并把目录传出去5)文件的操作,open,close算法五 流程图1. 使用流程图:(跳过两个判断的流程2,3)2Do_ls内判断(是否带参)图lflag带参?数lDo_ls函数直接输出文件或目录Y执行下面的switch操作进行判断,并输出。N图 23.ls_prepare内的判断(是否显示隐藏文件)图lflag带参?数aLs_prepare函数输出显示所有文件及目录。Y跳过以.开头的所有文件/目录。N图3六 源程序#include #include #include #include #include #include #include #include #include #include int do_ls(char *dir,char *filename,int lflag)int n;struct stat buf;char out100;struct passwd *pw;struct group *gr;struct tm *t;if(lflag = 0) /如果不带l参数,直接显示文件/目录名printf(%st,filename);return 0;if(lstat(dir,&buf)=0;n-) /打印文件的读写属性:读r、写w、执行x、无权限-if(buf.st_mode&(1pw_name); gr = getgrgid(buf.st_gid); /所属组名printf( %s,gr-gr_name);printf( %ld,buf.st_size); /字节计总大小t = localtime(&buf.st_atime); /最后一次访问时间printf( %d-%d-%d %d:%d,t-tm_year+1900,t-tm_mon+1,t-tm_mday,t-tm_hour,t-tm_min); printf( %s ,filename); if(S_ISLNK(buf.st_mode) /判断是否为链接,是返回真printf( - );if(readlink(filename,out,100)=-1)/printf(readlink errorn);printf(%s,out);printf(n);return 0;int ls_prepare(char *w,int lflag) /ls的准备工作struct stat buf; /man lstat可以看到此结构char name100; DIR *dir; /类似打开文件的fd描述符struct dirent *pdr; /man readdir可以看到此结构if(lstat(w,&buf)d_name);do_ls(name,pdr-d_name,lflag);closedir(dir);else /为文件则直接显示do_ls(w,w,lflag);return 0;int main(int argc,char *argv)int lflag =0;char c;int i;while(c = getopt(argc,argv,l)!=-1) /解析命令行参数,即-/-后面的字符串和给定的字符串匹配,有未解析字母返回字母或问号(取决于第3个参数),否则返回-1switch(c) /此处仅匹配lcase l:lflag =1;break;default:break;if(argc = optind ) /optind系统变量,执行命令参数的个数(不包括命令,奇怪的是无参情况下他为1),判断argc是否为1,是则取当前路径,让我们显得更专业点ls_prepare(./,lflag);elsefor(i=optind;iargc;i+) /所有目录都传进去ls_prepare(argvi,lflag);printf(n);return 0;七 实验结果截图八 结果分析第一个截图是带参数的运行结果,显示了文件及目录的属性,可读可写可执行之类的,第二个截图是不带参数的运行结果,是直接显示了文件的目录。九 心得体会这次实验让我收获蛮多的。一开始老师给了一点参考代码,我看了好久没什么头绪,然后先把程序打到小红帽里,在打代码的过程中,对程序有了点理解。第一次运行的时候有几十个错误,因为程序还没修改,后来通过思考和看实验的要求,开始慢慢的修改程序。修改过程中,出现了点意外,打好的代码都没了,然后请教老师怎么恢复。老师说没了,只好重新打代码和修改,克服了这个困难,修改了只剩下几个错误的时候,不会改了。看了好久好久,最后终于成功的运行成功了。我懂得了只要你一心的想把问题解决,最后总是会解决的,要有耐心和细心。十
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省南充市2025年中考英语真题附答案
- 2025年中国颗粒积木行业市场全景分析及前景机遇研判报告
- 2025年中国模块电源行业发展潜力分析及投资方向研究报告
- 2025年中国马饲料市场运行态势及行业发展前景预测报告
- 泌尿外科专科知识
- 细化培训课件
- 仓库作业培训课件
- 2025年 重庆两江新区雁启幼儿园招聘考试笔试试题附答案
- 2025-2031年中国农村网购行业市场全景监测及投资战略咨询报告
- 2025年中国烘手器市场运行态势及行业发展前景预测报告
- 数据标注教学课件
- 涉密项目保密管理制度
- 东莞市招聘事业编制教职员笔试真题2024
- 小学数学老师德育论文
- CJ/T 303-2008稳压补偿式无负压供水设备
- JG/T 346-2011合成树脂装饰瓦
- 2025年人教部编版语文五年级下册期末检测真题及答案(2套)
- 肾性高血压健康教育
- T/CAEPI 70-2023水泥窑协同处置生活垃圾焚烧飞灰水洗除盐工艺技术要求
- 2025至2030年中国电梯能量回馈单元数据监测研究报告
- 2024年全国工会财务知识大赛备赛试题库500(含答案)
评论
0/150
提交评论