系统软件课程设计报告

上传人:cl****1 文档编号:562435268 上传时间:2023-02-08 格式:DOCX 页数:9 大小:24.06KB
返回 下载 相关 举报
系统软件课程设计报告_第1页
第1页 / 共9页
系统软件课程设计报告_第2页
第2页 / 共9页
系统软件课程设计报告_第3页
第3页 / 共9页
系统软件课程设计报告_第4页
第4页 / 共9页
系统软件课程设计报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《系统软件课程设计报告》由会员分享,可在线阅读,更多相关《系统软件课程设计报告(9页珍藏版)》请在金锄头文库上搜索。

1、北京化工大学北方学院课程设计报告课程名称设计题目linux下的c语言设计专业、班级学号姓名指导教师设计时间年月日一、引言(简要说明设计题目的目的、意义、内容、主要任务等)1. 设计目的Linux/Unix操作系统课程设计是在完成理论课程学习之后安排的综合实践训练,通 过几周的综合课程设计,在学生掌握Linux的基本知识及常用的操作命令基础上,提高 学生对所学知识的应用能力,特别是:煅炼学生搜集有关Linux资料,在资料文档的帮 助下,运用Linux的基本知识及常用的操作命令来解决问题的能力。2. 设计要求通过几周的综合课程设计,要求能完成给定的任务,并写出相应的课程设计总结报告1、根据合理的进

2、度安排,按照程序的流程及方法,踏实地开展课程设计活动。2、课程设计过程中,在设计各环节中撰写相关的技术文档,最后要求提交详细的课程 设计报告。3、开发出可以运行的机房辅助管理系统,通过上机检查。3. 设计的主要内容1、制作一个可供小学数学运算的程序:10以内加减法,能根据输入题数出题,判断题 是否正确,最后计算分数。例如:请输入题数:21+5=2+4=由用户输入答案,程序根据答案判断正误,输出正确率()。并用make工程管理器编译。 (注意分割文件,可参考第一题的提示。)编写makefile文件。(难度系数:2)2、设计一个程序,要求利用read函数读取系统文件“/etc/passwd”,并在

3、终端中显示 输出。3、设计一个程序,程序在运行时,能执行vim程序,即创建一个新的进程,并用ps命 令查看程序的进程号与vim的进程号。(难度系数:1)4. 设计的主要任务认真写文档,熟悉linux下的操作,掌握linux的基本知识及常用的操作命令,运用linux 的基本知识及常用的操作命令来解决问题的能力。二、正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、 编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论 等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、 结构严谨,符合各学科、专业的有关要求。)1. makefi

4、le文件介绍Makefile文件Makefile 个工程中的源文件不计数,其按类型、功能、模块分别放在 若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件 需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile 就像一个Shell脚本一样,其中也可以执行操作系统的命令。1.1 makefile主要功能Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系 并自动维护编译工作。而makefile文件需要按照某种语法进行编写,文件中需要说明如 何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的

5、依赖关系。makefile 文件是许多编译器一包括Windows NT下的编译器一维护编译信息的常用方法,只是在集 成开发环境中,用户通过友好的界面修改makefile文件而已。1.2自动化编译makefile带来的好处就是“自动化编译” 一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释 makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的 make, Visual C+的 nmake, Linux 下 GNU 的 make。可见,makefile 都成为了一种在工程 方面的编译方法。

6、1.3课程题目要求制作一个可供小学数学运算的程序:10以内加减法,能根据输入题数出题,判断题是否正 确,最后计算分数。例如:请输入题数:21+5=2+4=由用户输入答案,程序根据答案判断正误,输出正确率()。并用make工程管理器编译。 (注意分割文件,可参考第一题的提示。)编写makefile文件。(难度系数:2)1.4实现 myhead.h /* myhead.h */ #ifndef MYHEAD_H #define MYHEAD_Hextern int question(int);extern int input(void);#endifmain.c#include stdlib.h#

7、include stdio.h#include ctype.h#include myhead.hint main (int argc,char *argv)int i;int k;int j 二 inp ut();int correctNum = question(j);floa t f 二 correc tN um/(j*1.0);printf(the correct answer rate is %0.2fn,f*100); exi t(0);input.c#include stdlib.h#include stdio.hint input(void)int j; while(l)prin

8、tf (please input the number of questions:);辻(!scanf(%d, &j)printf (please input the correct number,and the programe is shutdown nown);exi t(0);elsebreak;return j;chute.c#include stdlib.h#include stdio.hint question(int questionNum)int i;int k;int ql;int q2;int THE_TRUE_ANSWER_NUMBER=O; srand(unsigne

9、d)time(NULL);for(i=0;iquestionNum;i+)q1 = rand()%10;q2 = rand()%10; prin tf(%d+%d二,ql,q2); scanf(%d,& k);辻(k=ql+q2)THE_TRUE_ANSWER_NUMBER+=1; return THE_TRUE_ANSWER_NUMBER;all.c#include stdlib.h#include stdio.hstatic int THE_TRUE_ANSWER_NUMBER = 0;int main (int argc,char *argv)int i;int j;int k;int

10、ql;int q2; srand(unsigned)time(NULL);printf (please input the number of questions:);scanf(%d,&j);for(i=0;ij;i+)ql = rand()%10;q2 = rand()%10; prin tf(%d+%d二,q1,q2); scanf(%d,& k);辻(k=q1+q2)THE_TRUE_ANSWER_NUMBER+=1;float f = THE_TRUE_ANSWER_NUMBER/(j*1.0);printf(the correct answer rate is %0.2fn,f*1

11、00); exi t(0);Makefile 文件main:main.o inp ut.o chuti.ogcc main.o inp ut.o chuti.o o mainmain.o:main.c myhead.hgcc -c main.cinput. o:main.cgcc -c inp ut.cchuti. o:main.cgcc -c chuti.c2. 文件操作2.1课程题目要求设计一个程序,要求利用read函数读取系统文件“/etc/passwd”,并在终端中显示输出。 2.2实现#includesys/types.h#includesys/stat .h#includefcnt

12、l .hmain()int fd,size;char buffer80;fd=open(/etc/passwd,O_RDONLY);size二read(fd,buffer,sizeof(buffer); close(fd);prin tf(“s”,buffer);3. 进程控制3.1进程简介进程是一个程序的一次执行的过程。在Linux环境下,每个正在运行的程序都称为进程。每个进程包含进程标识符及数据,这些数据包含进程变量、外部变量及进程堆栈等。 3.1.1进程与程序由于一个进程对应一个程序的执行,但进程不等同于程序。因为程序是静态的概念, 进程是动态的概念。进程是程序执行的过程,包括了动态创建

13、、调度和消亡的整个过程。进程是程序执 行和资源管理的最小单位。对系统而言,当用户在各级系统中键入命令执行一个程序的时候,它将启动一个进 程,因此,一个程序可以对应多个进程。3.1.2 Linux环境下的进程管理Linux环境下的进程管理包括启动进程和调度进程。启动进程有两种主要途径:手工启动和调度启动。(1) 手工启动又可分为前台启动和后台启动。前台启动:是手工启动一个进程的最常用方式。一般地,当用户输入一个命令时, 就已经启动了一个进程,并且是一个前台的进程。后台启动:往往是在该进程非常耗时,且用户也不急着需要结果的时候启动。一般 地,当用户输入一个命令结尾加上一个“&”号,就是后台启动一个

14、进程。(2) 调度启动有时系统需要进行一些比较费时而且占用资源的维护工作,并且这些工作适合在深 夜无人职守的时候进行,这时用户就可以事先进行调度安排,指定任务运行的时间 或者场合,到时候系统就会自动完成这一切工作。调度进程包括对进程的中断操作、改变优先级、查看进程状态等。Linux环境下在进程启动时,系统会分配一个唯一的数值给每个进程,这个数值就 称为进程标识符。在Linux中最主要的进程标识有进程号(PID)和它的父进程号(PPID)。 PID惟一地标识一个进程。 PID和PPID都是非零的正整数。 在Linux中获得当前进程的PID和PPID的系统调用函数为getpid和getppid 函

15、数。3.2课程题目要求设计一个程序,程序在运行时,能执行vim程序,即创建一个新的进程,并用ps 命令查看程序的进程号与vim的进程号。(难度系数:1)3.3实现#includest dio.h/*文件预处理,包含标准输入输出库*/#includeunistd.h/*文件预处理,包含 getpid、getppid 函数库*/int main()/*c程序的主函数,开始入口*/char *args = /usr/bin/vim,NULL;prin tf(系统分配的进程号(PID )是:dn,gi tpid();/*显示输入进程号*/if(execve(/usr/bin/vim,args,NULL)O) /*调用 vi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号