洛阳师范学院UNIX实验报告-1.docVIP

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

测试过程:(实验中出现的问题、错误、解决方法) 基本实现了函数的功能,在测试过程中会出现无法解决的问题,通过请教老师的讲解最终达到了老师的基本要求 实验总结: 通过此次实验掌握类UNIX下程序开发的流程; 熟悉程序开发有关的工具软件; 掌握ANSI C的编程规范; 掌握文件系统访问的编程方法、数据结构、函数; 签名 2012 年 2 月 20 日 评语与成绩: 教师签名: 年 月 日 洛阳师范学院信息技术学院 软件实验报告 专业: 软件工程 课程: UNIX高级编程 学号: 姓名: 班级: 实验名称 编程环境 实验类型 验证型 实验时间 2012-2-22 实验环境 装有linux操作系统的虚拟机环境 实验目的与要求: 掌握类UNIX下程序开发的流程; 熟悉程序开发有关的工具软件; 掌握ANSI C的编程规范; 掌握文件系统访问的编程方法、数据结构、函数; 理解不同系统平台下编程的特点、区别。 实验内容: 编程实现例程1-5 使用vi编辑程序 分别使用gcc和cc编译生成可执行程序 分析、验证程序的功能 列出程序中包含的头文件,分别指出头文件包含程序中那些函数的原型 列出程序中用到了那些原始系统数据类型 分析该程序在调用execlp函数而执行子进程时,为什么不能传递参数?如果实现该功能,需要如何修改程序(提出方案) 编程实现指定目录的递归访问 分析、调试例程1-1 总结程序中用到哪些与目录操作相关的数据结构 如果在例程基础上增加“递归列出一个目录中的所有文件”,需要哪些数据结构、如何修改程序的逻辑结构? 通过搜索、查阅资料,提出上述问题的解决方案; 编程实现该方案; 实验步骤:(算法描述、源程序、操作步骤和方法) 习题1.5的头文件有 #includesys/types.h基本系统数据类型 #includesys/wait.h进程控制 #includestdio.h定义输入输出函数 #includestring.h字符串处理函数 #includeunistd.h符号常量 #includeerrno.h定义错误码 #includestdarg.h不定参数列表支持 Vsprintf()由stdarg.h stdio.h printf(),Fgets(),Fputs(),Fprintf(),Fflush(),Sprintf()需要用到头文件stdio.h 函数execlp()需要用到unistd.h头文件 以_t结尾的数据类型被称为原始系统数据类型。它们通常在头文件sys/types.h中定义(头文件unistd.h应已包括该头文件)。 1.5的程序用到的原始数据类型pid_t 在主程序中调用的execlp函数格式为: Execlp(buf,buf,(char *)0); 因为传递的参数有误,以至于函数无法正常运行。 习题1.1 由题意“递归列出一个目录中的所有文件”知:应在 While((dirp=readdir(dp))!=NULL) Printf(“%s\n”,dirp-d_name); 可写一子程序,对传递过来的参数(文件名)的属性进行判断,并输出文件名,若参数的属性为目录,则该函数调用自身(将传递的参数修改为本次输出的文件名)while循环体中即为调用的子函数名称,在子函数体 Readdir结构体 Stat结构体 只能查一级目录,因为调用子函数checkdir()传递的第一个文件是:“.” 文件“。”:本级目录文件。 子函数查到“.”文件,判断该文件为目录文件,同时将该文件的地址递归传递给checkdir。从而进入死循环,无法跳出,最后导致系统溢出。 采用if(S_ISDIR(buf.st_mode)) { 判断是否为文件“.”或“..” 若不是则checkdir(参数); } 该算法也陷入死循环,无法跳出。 老师的建议是在 if(S_ISDIR(buf.st_mode)) { Open(文件); Read(文件); Close(文件); } 使用读文件内容的方法,读取本级目录文件“.”中的所有内容,这样也省去了遍历所有目录文件的频繁递归,自己觉得这样就不能够说是递归算法了,只能是调用子函数,阅读本级目录文件的内容。 按照程序所写,若判断出argv[1]位置的文件为目录文件,则打开该文件并,读该文件的内容,并将独到的内容输出到终端上。但是没有成功。运行那个结果为:

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档