ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:903.15KB ,
资源ID:6882265      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6882265.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计报告系统软件实践Word文档格式.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

课程设计报告系统软件实践Word文档格式.docx

1、 设计一个程序,要求复制进程,子进程显示自己的进程号(PID)后暂停一段时间,父进程等待子进程正常结束,打印显示等待的进程号(PID)和等待的进程退出状态。 程序四: 设计一个程序,要求创建一个管道,复制进程,父进程往管道中写入字符串,子进程从管道中读取并输出字符串 d) 主要任务程序一:要求按照原来的规律将它插入到数组中。程序二:要求设计两个程序,要求一个程序把三个人的姓名和帐号余额信息,通过一次流文件I/O操作写入文件“file”,另一个格式输出帐号信息,把每个人的帐号和余额一一对应显示输出。总结程序过程所用的相关知识(例如:语法,函数调用),分析解决程序运行过程出现的问题。写出程序代码的

2、设计与运行结果。程序三:要求子进程显示自己的进程号,然后暂停一段时间,等正常结束后,父进程打印显示等待的进程号以及等待的进程的退出状态。程序四:此题目要求先创建一个管道,父进程往管道内写入一段字符串,子进程读取父进程写入的字符串并且输出。二、 正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)程序一:程序描述:主程序调用其他程序的方法进行数组的插入。先定义一个排好序的数组,然后输入一个

3、数排序。程序应用makefile文件进行了文件的分割。Makefile文件的作用:Makefile文件 Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 源程序:4.c#include int main ()paixu();4_1.cvoid paixu ()int a8=1,23,34,38,56,67,89;int i,m;printf(原数组

4、顺序:);for(m=0;m7;m+)%d ,am);n请输入一个数字scanf(%d,&i);8;if(iam)int j;j=am;am=i;i=j;a7=i;n得到数组:nMakefile文件main:4_1.o 4.o gcc 4_1.o 4.o -o aisDelta.o: gcc 4_1.c -cmain.o: gcc 4.c c运行结果:图1 排序程序二:程序主要实现了文件流的操作,分别调用了fwrite和fread函数,两个函数的定义详细介绍如下:Fwrite函数和fread函数:直接输入输出操作是以记录为单位进行读写,相应的库函数如下:表头文件:定义函数:size_t fre

5、ad (void *ptr,size_t size,size_t nmemb,FILE *fp);size_t fwrite (const void *ptr,size_t size,size_t nmemb,FILE *fp);fread 函数用于执行直接输出操作。参数ptr是指向读取数据的缓冲区的指针。参数size是读记录的大小。参数nmemb是所读记录的个数。参数fp是指向要读取的流的FILE结构指针。fwrite函数用于执行直接输入操作。参数这ptr是指向存放要输入数据的缓冲区的指针。参数size是写入记录的大小。参数nmemb是所写记录的个数。参数fp是指向要写入数据的流的FILE结

6、构指针。调用函数fread和fwrite 的返回值是实际读取或写入的记录数目。 这个返回值应当同nmemb的预设值相同。只有当到达文件的末尾(只有在读取操作时有此情况)或出现读写错误时,会造成返回值比设定的nmemb值小,甚至是负值的情况。这时系统内的文件结束标志或文件错误标志会被置为相应的值。2.c#define set_s(x,y,z) strcpy(sx.name,y);sx.pay=z;#define nmemb 3struct testchar name20;int pay;snmemb;int main()FILE *fp;set_s(0,赵普,1);set_s(1,赵国庆,0);

7、set_s(2,吕玉彬,23);fp=fopen(yinhang,a+fwrite(s,sizeof(struct test),nmemb,fp);fclose(fp);return 0;3.cint i;rfread(s,sizeof(struct test),nmemb,fp);for(i=0;iunistd.hpid_t fork(void);pid_t vfork(void);调用fork时,系统将创建一个与当前进程相同的新的进程。它与原有的进程具有相同的数据、连接关系和在程序同一处执行的连续性。将原有的进程称为父进程,而把新生成的进程称为子进程。子进程是父进程的一个复制,子进程获得同

8、父进程相同的数据,但是同父进程使用不同的数据段和堆栈段。流程图:源程序:sys/wait.hpid_t pid,vpid;int status,i;pid=fork();if(pid=0)zheshizijincheng jinchenghaoshi:,getpid();sleep(5);exit(6);elsezheshifujincheng zhengzaidengdaizijincheng.nvpid=wait(&status);i=WEXITSTATUS(status);dengdaidejinchengde jinchenghaoshi:%d,jieshuzhutai:,vpid,i

9、);图3 存款 程序四:此程序主要实现了管道的创建,管道的读写操作。(1)管道的创建:int pipe(int filedes2);此函数用于创建一个管道。参数filedes是一个两元整型数组,用于存放调用该函数所创建管道的两个文件描述符。 filedes 0 存放管道读取端的文件描述符 ;filedes 1存放管道写入端的文件描述符。 调用成功时,返回值为0;调用失败时,返回值为-1。 (2)、管道的读写操作:read(由已打开的文件读取数据)#includessize_t read(int fd,void * buf ,size_t count);函数说明:read()会把参数fd 所指的

10、文件传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,如果返回0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动。附加说明 :如果顺利read()会返回实际读到的字节数,最好能将返回值与参数count 作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。错误代码:EINTR 此调用被信号所中断。EAGAIN 当使用不可阻断I/O

11、 时(O_NONBLOCK),若无数据可读取则返回此值。EBADF 参数fd 非有效的文件描述词,或该文件已关闭。write(将数据写入已打开的文件内)ssize_t write (int fd,const void * buf,size_t count);write()会把参数buf所指的内存写入count个字节到参数fd所指的文件内。当然,文件读写位置也会随之移动。返回值 如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。 错误代码:EADF 参数fd非有效的文件描述词,或该文件已关闭。程序源代码:Fuzhi.c:int main(void)

12、 int n,fd2; pid_t pid; char line80; if(pipe(fd)0) printf(pipe errorn exit(1);if(pid子进程从管道读取%d个字符,读取的字符串是:%sn,n,line); close(fd0);/关闭读取端 if(write(fd1,my name is 吕钰彬!,80)!=-1)父进程向管道写入my name is 吕钰彬! waitpid(pid,NULL,0); exit(0);图4父写子读三、 结论(应当准确、完整、明确精练;也可以在结论或讨论中提出建议、设想、尚待解决问题等。Makefile 介绍make 命令执行时,需

13、要一个Makefile 文件,以告诉make 命令需要怎么样的去编译和链接程序。信号是进程之间通信的一种方式。它包括3部分操作:1.设置信号处理函数。系统调用signal。内核调用sys_signal(),设置当前进程对某信号的处理函数。2.发送信号.系统调用kill。内核调用sys_kill()。向目标进程发送信号。3.接收并处理信号。目标进程调用do_signal()处理信号。从用户态的角度看,目标进程在执行用户态的代码时突然“中断”,转而去执行对应的信号处理函数(同样在用户态)。等到信号处理函数执行完后,又从原来被中断的代码开始执行。如何达到这样的效果呢?由前面的几种内核的伪装现场的手段

14、,我们可以猜出它这次使用的手段。比如,要让目标进程执行信号处理函数,在内核态中当然不可能直接调用,但是可以通过设置pt_regs中的eip来达到这种效果。但是,要使目标进程在执行完信号处理函数后,又恢复到被中断的现场继续执行,那得花些技巧。不过,不外乎设置堆栈。这一次还包括了用户态堆栈。由于恢复的任务比较艰巨,系统干脆提供了一个系统调用sigreturn。既然内核希望用户在执行完信号处理函数后,调用sigreturn。接下去的思路就比较简单了。就是先把用户态的eip设置为signal_handler(通过修改pt_regs中的eip来实现),然后把堆栈中的返回地址改成调用sigreturn的一

15、段代码的入口(当然原来的返回地址也还是要保存的)并且把相关参数“压入”用户态堆栈。这样,在源进程发送信号后不久,目标进程被调度到,然后执行到do_signal。对信号一一作处理. pram指定了RAM起始的物理地址,必须始终存在,并应等于PHYS_OFFSET。pio是供arch/arm/kernel/debug-armv.S中的调试宏使用的,包含IO的8 MB区域的物理地址。vio是8MB调试区域的虚拟地址。这个调试区域将被位于代码中(通过MAPIO函数)的随后的构架相关代码再次进行初始化。l FUP(func) 机器相关的修正,在存储子系统被初始化前运行。lMAPIO(func) 机器相关

16、的函数,用于IO区域的映射(包括上面的调试区)。l INITIRQ(func) 用于初始化中断的机器相关的函数。四、 参考文献1贾宗璞,许合利.C语言程序设计M.江苏:中国矿业大学出版社,2007.2谭浩强.C程序设计(第二版)M.北京:清华大学出版社,2001.3谭浩强,张基温,唐永炎编著. C语言程序设计教程M.北京:高等教育出版社,1992.4秦友淑,曹化工编著.C语言程序设计教程M.武汉:华中理工大学出版社,1996.5曹衍龙,林瑞仲,徐慧 编著.C语言实例解析精粹M. 北京:人民邮电出版社,2005.6黄明等编著.C语言程序设计M.大连。大连理工大学出版,1996.五、 指导教师评语 签名: 年 月 日课程设计成绩(五级分制)

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2