ls的实现.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ls的实现.doc

项 目 报 告 1 项目名称 ls的简单实现 2 项目目的 为了让同学们更好的掌握Linux的命令的操作方法,以及掌握Linux的命令的实现方法。 3 项目的要求 1)ls的实现满足两种状况,一是能详细的显示文件的信息,二是简单的显示文件的信息。 2)简单显示时只是列出文件的名称,若是目录文件则列出目录下的文件的名称,要求分栏显示,文件按首字母排序。 3)详细显示要按顺序显示文件的类型,权限,用户名,组名,链接数,文件大小,以及修改的时间。 4)在两种模式下都不能显示隐含文件。 4 算法的描述 1)首先实现ls的两种功能是运用-l 来标识的,这种标识的识别 通过函数do_get_opt(int argc, char *argv[]);我自定义的函数来实现的其中最为重要的函数是 getopt_long (argc, argv, short_options,long_options, NULL);此函数是判断选项的函数,就是因为此函数能够识别-l等的表达式此函数的返回值就是指向选项的指针,当没有选项时返回-1。 2)详细的显示则是用do_stat(char *filename, char *oldfilename );本函数则是调用了函数show_file_info( char *filename, struct stat *info_p, char *oldfilename ),显示具体的信息,filemode(int mode),是显示文件的类型和权限等信息,这个算法的实现的信息存储在bits[11]中,运用移位的方法,每次移位3位并切通过与4,2,1的与运算得到所需的信息;struct stat结构也是很重要的里面包含了文件的各种信息。 3)文件夹的内容的显示do_file_dirf( char*dirname )do_file_dirs(char*dirname),前面的函数则是简单的显示目录文件,后面的函数则是详细的显示目录文件,首先 DIR *dir_ptr, struct dirent *direntp两个结构的声明,开始先打开目录 opendir( dirname ),然后读取目录 direntp=readdir( dir_ptr ) 用direntp-d_name得到文件名,文件读取完全后要关闭文件closedir(dir_ptr) 4)我的控制算法则是比较的松散,主要放在了do_get_opt()函数的case -1这个选项里面因为无论有什么都会经过这个选项,我定义了tmp控制变量,有-l时就变为了1,通过此变量的控制加上自定义的函数judge_dir()函数来控制输出是普通文件还是目录,处理当前目录是则是采用”.”当作文件名来实现的,处理隐含文件的时候则是采用了filename[0]!=.来控制的,在显示目录里文件的详细信息时,因为direntp-d_name不是路径了,所以要加上当前的路径主要的函数 strcat(name,direntp-d_name),此时的name文件就是路径文件了,但是文件名的输出则是多了路径因此就在do_stat()里面定义了char *oldfilename。 5 处理的 6 项目心得 通过对本项目的实现,首先了解了更多的C语言的知识,C语言中的各种结构和函数非常的丰富,以前都没有很好的了解和使用,现在通过这次项目的实现了解了很多的实现和操作,另外对于Linux系统下的GCC编译器的使用,以及Vim的使用感到非常的好用,在实验中了解了对于目录的处理方法,对于文件的各种属性的获得等,在项目实现中在目录处理时,我按平常的参数传递总是报错,后来了解到stat()函数需要传递的是路径,了解到怎么用C加上路径,最后终于实现了,又了解了Ubuntu的许多的操作知识,“实践是检验真理的唯一标准”果然。

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档