




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京化工大学北方学院课程设计报告课程名称 系统软件实践 设计题目 Linux C 程序设计 专业、班级 软件1004 学 号 姓 名 张雄飞 指导教师 马睿 设计时间 2013年10月8日-2013年10月27日 2013年 10月 27 日 一、 引言(简要说明设计题目的目的、意义、内容、主要任务等)1.1设计目的本次系统软件课程设计的主要目的有两个:一方面是分析设计linux源代码,另一方面是进行系统级的程序设计。1.2 主要任务(1)编写程序,输入一个十进制整数,将其变换为二进制后存储在一个数组中。并用make工程管理器编译。(注意分割文件,可参考第一题的提示。)编写makefile文件。(2)设计一个程序,要求利用read函数读取系统文件“/etc/passwd”,并在终端中显示输出。(3)设计一个程序,要求复制进程,子进程显示自己的进程号(PID)后暂停一段时间,父进程等待子进程正常结束,打印显示等待的进程号(PID)和等待的进程退出状态。(4)设计一个程序,要求创建一个管道,复制进程,父进程往管道中写入字符串,子进程从管道中读取并输出字符串。1.3题目设计意义通过本课题的毕业设计,熟悉了关于linux下C语言的系统软件程序设计,可以比较深入的了解和掌握基本gcc,vim等编程软件的使用和对makefile文件的使用。掌握进程间的通信方式,进程控制,文件操作的方式。本报告就系统的开发过程做了详细的介绍,并对系统的原理、总体设计等方面做了深入细致的讨论。二、 正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)任务一:十进制和二进制的转换 2.1、主要内容2.1.1本程序够分为两个模块:转换模块和数字输入模块;下面分别对这两个模块的算法做一下介绍。(1)转换模块:利用十进制转换二进制规则,也就是将输入的十进制数字除二取余。直到商为零为止。然后倒序输出余数。(2)数字输入模块:利用scanf函数输入一个整数,然后传递给转换函数。以上为程序的模块说明。1.1.2程序结构及主要过程(1)此成熟包含了循环结构,顺序结构等在c语言中的主要结构。其中穿插着函数调用,数组等linux c语言的大部分知识。(2)本程序结构和过程思路如下:由main函数接受一个十进制的整数(正整数,负整数都可),再由转换函数进行转换和输出对应的二进制。1.1.3makefile介绍Makefile文件介绍Makefile一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile主要功能Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器-包括 Windows NT 下的编译器-维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。自动化编译Makefile带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,可见,makefile都成为了一种在工程方面的编译方法。2.1.4 makefile规则makefile中的规则是这样的:TARGET : DEPENDENCIES COMMAND目标(TARGET)程序产生的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。依赖(DEPENDENCIES)是用来产生目标的输入文件,一个目标通常依赖于多个文件。命令(COMMAND)是make执行的动作,一个可以有多个命令,每个占一行。注意:每个命令行的起始字符必须为TAB字符!有依赖关系规则中的命令通常在依赖文件变化时负责产生target文件,make执行这些命令更新或产生target。规则可以没有依赖关系,如包含target “clean”的规则。规则解释如何和何时重做该规则中的文件,make根据依赖关系执行产生或更新目标;规则也说明如何和何时执行动作。有的规则看起来很复杂,但都符合上述模式。makefile中的规则描述如何生成特定的文件,即规则的目标。规则列出了目标的依赖文件,指定生成或更新目标的命令。规则的次序是不重要的,除非是确定缺省目标:缺省目标是第一个makefile中的第一个规则;如果第一个规则有多个目标,第一个目标是缺省的。有两个例外:以.开头的目标不是缺省目标;模式规则对缺省目标没有影响。通常我们所写的地一个规则是编译整个或makefile中指定的所有程序。2.1.5 Makefile文件main:main.o zhuanhuan.ogcc -o main main.o zhuanhuan.omain.o:main.cgcc -c main.czhuanhuan.o:zhuanhuan.cgcc -c zhuanhuan.cecho:echo this is a zhuanhuanclear:rm main mian.o zhuanhuan.o2.1.6 源程序#includeint main() int i; printf(清输入一个十进制数字:); scanf(%d,&i); zhuanhuan(i); return 0;#includeint zhuanhuan(int i) int k,l; int a30;for(l=0;l0)int b=0; dok=i%2; i=i/2; ab+=k; while(i!=0);for(l=b;l=0;l-) printf(%d,al);elseint b=0;i=-i;dok=i%2; i=i/2; ab+=k; while(i!=0);ab+1=1; for(l=b+1;l=0;l-) printf(%d,al);return 0;2.1.7 试验过程及结果(1)运行make:(2)输入十进制62.1.8结果分析 这是一个十进制转换二进制程序,能根据用户输入的十进制转换为对应的二进制数字。经过测试本程序能够实现以上功能。任务二:使用read函数读取系统文件 2.2、主要内容2.2.1本程序只有一个模块,下面分别对这个模块的算法做一下介绍。在main函数里面利用read函数读取系统文件“/etc/passwd”,并在终端中显示输出。2.2.2 程序结构及主要过程本程序共包含了顺序结构这种在 C 程序中的主要结构,指针、函数调用等知识,该程序覆盖了linux c语言所学的除结构体外的大部分知识。本程序结构和过程思路如下:在main函数里面利用read函数读取系统文件“/etc/passwd”,并在终端中显示输出。2.2.3程序源代码#include#include#include#include#includeint main()int fd,size;char buffer80;fd=open(./etc/passwd,O_RDONLY);size=read(fd,buffer,sizeof(buffer);close(fd);printf(%s,buffer);return 0;2.2.4运行结果2.2.5结果分析这是一个利用read函数读取系统文件的程序,要求完成读取和显示“/etc/passwd”。(因为读取的是密码文件所以会出现加密乱码情况!)经测试该程序基本实现了以上功能,且计算结果合理正确,满足实验要求。任务三:进程控制 2.3.1主要内容设计一个程序,要求复制进程,子进程显示自己的进程号(PID)后暂停一段时间,父进程等待子进程正常结束,打印显示等待的进程号(PID)和等待的进程退出状态。2.3.2 程序结构及主要过程(1)本程序运用了顺序结构,选择结构等c语言主要结构,指针、函数调用等知识,该程序覆盖了linux c语言所学的除结构体外的大部分知识。(2)本程序结构和过程思路如下:利用fork函数复制进程,再利用getpid函数获取子进程的进程号,同时也利用了wait函数来等待进程。2.3.3程序源码#include#include#include#includeint main()pid_t pid,vpid;int status,i;pid=fork();if(pid=0)printf(子进程pid:%dn,getpid();sleep(2);exit(3);elsevpid=wait(&status);i=WEXITSTATUS(status); printf(父进程pid:%d,退出状态%dn,vpid,i);2.3.4 试验过程及结果abclocalhost $ gcc 4.cabclocalhost $ ./a.out子进程pid:3047父进程vpid:3047,退出状态3abclocalhost $2.3.5 结果分析这是一个进程控制程序,要求完成复制进程,子进程显示自己的进程号(PID)后暂停一段时间,父进程等待子进程正常结束,打印显示等待的进程号(PID)和等待的进程退出状态。 经过测试,该程序基本实现了以上功能,且计算结果合理正确,满足实验要求。任务四:进程间通信2.4主要内容2.4.1程序要求设计一个程序,要求创建一个管道,复制进程,父进程往管道中写入字符串,子进程从管道中读取并输出字符串。4.4.2程序结构及主要过程(1)本程序运用了顺序结构,选择结构等c语言主要结构,指针、函数调用等知识,该程序覆盖了linux c语言所学的除结构体外的大部分知识。(2)本程序结构和过程思路如下:4.1.3程序源码#include#include#includeInt main(void)Int n,fd2;Pid_t pid;Char line80;If(pipe(fd)0)Printf(“pepe errorn”);Exit(1);Pid=fork();If(pid0)Printf(“子进程从管道读取%d个字符,读取字符串是:%sn”,n,line);Close(fd0);ElseClose(fd0);If(write(fd1,”hello!”,6)!=-1)Printf(“父进程向管道写入“hello!”n”);Close(fd1);Waitpid(pid,NULL,0);exit (0);2.4.4运行结果abclocalhost $ gcc 4.cabclocalhost $ ./a.out父进程向管道写入hello!子进程从管道读取6个字符,读取字符串是:hello!abclocalhost $2.4.5结果分析这是一个进程控制程序,要求创建一个管道,复制进程,父进程往管道中写入字符串,子进程从管道中读取并输出字符串。 经过测试,该程序基本实现了以上功能,且计算结果合理正确,满足实验要求。三、 结论(应当准确、完整、明确精练;也可以在结论或讨论中提出建议、设想、尚待解决问题等。)3.1设计过程中的感受与体会为了增强我们的C程序的实际操作与设计能力我编写了这个答题系统,下面就来谈下我在这次程序设计过程中的感受与体会。从程序的整体构思到程序的算法设计及程序的编写再到最后程序的调试,我经历了重重困难和考验,但是我并没有放弃,我运用本学期所学到的知识和课外的一些知识,从想到查再到问,最后完成了该系统。在设计过程中,我不仅仅是完成了若干个系统,更重要的是我在这次设计中巩固了linux c所学到的知识,锻炼了自己的实践能力;另外在这次设计的过程中,我懂得了在设计遇到困难的时候怎样去解决这个困难。从书上网上查阅资料,向比我们知识丰富的人虚心请教,这是我们解决问题的主要方法,这样也同时扩宽了我们的知识面,打破了课堂的局限,在以后的人生道路中,我们也应该保持住这种精神。只要这样我们相信今后我们的人生道路会像这次程序设计一样取得成功。以上就是我在这次程序设计过程中的感受与体会。3.2遇到的问题与解决方法在设计本系统的过程中,并不是一帆风顺的,设计与调试期间我也遇到了很多困难,现在就将我遇到的困难和困难的解决方法列出。在做到第三个关于管道的时候出现了游离错误,但是经过老师和同学的帮助,再加上自己的仔细查找得知在read函数多出一个分号。这个小小的粗心大意花费了我大量的时间。我要以以此为戒,以后一定认真完成每一件事。 在完成十进制和二进制转换的问题时候由于自己前期的准备不够充分,没有把逻辑结构想清楚,想明白。使得自己在编程过程中出现了很多逻辑的错误。同时也出现了数组的地址越界问题,这是由于自己对对for循环的把握不够准确,以后要加强这方面的练习。(3)由于自己的本省机器是windos系统,而做的项目是linux
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届广西龙胜县八年级物理第一学期期末学业质量监测试题含解析
- 河南省南阳市邓州市2026届物理八上期末考试试题含解析
- 辽宁省铁岭市名校2026届物理八年级第一学期期末调研试题含解析
- 2026届吉林省重点中学物理八上期末统考试题含解析
- 钒电池电解液项目可行性研究报告
- 软件项目管理大作业本地生活服务APP可行性研究报告
- 电梯节能认证项目可行性研究报告
- 湖南禁捕水域管理办法
- 滞销手机终端管理办法
- 城市新区规划调整与周边商业环境稳定风险评估报告
- 培训行业的业务合同范本
- 汽车销售日常知识培训课件
- 2025广东广州市天河区人民武装部招聘民兵教练员5人备考题库及答案解析
- 科学版(2024)一年级全一册体育与健康全册教案
- 学前教育机构师资队伍薪酬激励与职业发展研究报告
- (正式版)DB15∕T 2351-2021 《燕麦米加工技术规程》
- 小学朗读教学课件
- 2024德州市庆云县渤海路街道社区工作者招聘考试试题
- 皮肤干细胞研究与应用
- 玄麦甘桔颗粒讲解
- 2024-2025学年广东省深圳高级中学高一(下)期末物理试题及答案
评论
0/150
提交评论