lab linux进程及并发程序设计 .

lab linux进程及并发程序设计 .

ID:14112357

大小:628.00 KB

页数:21页

时间:2018-07-26

lab linux进程及并发程序设计 ._第1页
lab linux进程及并发程序设计 ._第2页
lab linux进程及并发程序设计 ._第3页
lab linux进程及并发程序设计 ._第4页
lab linux进程及并发程序设计 ._第5页
资源描述:

《lab linux进程及并发程序设计 .》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、华南师范大学实验报告学生姓名学号专业多媒体与网络技术年级、班级12级多媒体2班课程名称操作系统原理实验项目实验5Linux进程及并发程序设计实验类型验证设计R综合实验时间2014年4月22日实验指导老师实验评分实验5Linux进程及并发程序设计一.实验目的:掌握Linux环境下的进程并发程序及管道应用程序的编写要点。二.实验内容:1编写一个并发程序,父进程打印“TheParentisrunning”,子进程打印“TheChildisrunning”。2编写一个并发程序,父进程打印“TheParentisrunning”,子进程打印“TheChildisrunning”,并保证子进程输出在前,

2、父进程输出在后。3编写一个管道应用程序,父进程通过管道提供字符串“putthestringintothepipe.”给子进程,子进程通过管道接收这条信息,然后打印输出。4调试并运行3.10的并发程序设计实例,显示结果是什么,并分析之。5提高题:编写一个管道应用程序,使父进程接受用户从键盘输入的数据信息并通过管道传送给子进程,子进程打印输出通过管道接收到的数据信息。三.实验过程步骤与结果:(一)编写一个并发程序1.根据要求编写程序:#includemain(){intp;//存放子进程pid号while((p=fork())==-1);//创建子进程直到成功为止if(p==0

3、)//返回值=0表示子进程返回{printf("TheChildisrunning");}else//返回值>0表示父进程返回{printf("TheParentisrunning");}}2.存放在Linux中的bingfa.c文档中:3.使用gcc命令对bingfa.c进行编译:4.多次使用./a.out执行该命令,查看结果:输出:TheParentisrunningTheChildisrunning或者TheChildisrunningTheParentisrunning5.运行结果分析:通过实验结果可看出,这是一个并发程序,子进程和父进程在不同的情况下先后出现的顺序可能不同,

4、具有随机性。(二)编写一个并发程序(子先父后)1.根据要求编写程序:#include#includemain(){intp;//存放子进程pid号while((p=fork())==-1);//创建子进程直到成功为止if(p==0)//返回值=0表示子进程返回{printf("TheChildisrunning");exit(0);//在子进程结束时调用exit(0),使子进程自我终止,并发终止信号给其父进程;}else//返回值>0表示父进程返回{wait(0);//父进程等待子进程终止,再执行下方程序printf("TheParentisrunn

5、ing");}}2.存放在Linux中的Childfirst.c文档中:3.使用gcc命令对Childfirst.c进行编译:4.多次使用./a.out执行该命令,查看结果:输出:TheChildisrunningTheParentisrunning5.运行结果分析:从运行结果可看出此程序实现了父等子的功能,始终是子进程先执行。从代码上看,是用wait(0)和exit(0)实现的,在子进程(p=0)运行后使用exit(0)终止进程,在父进程(p>0)内容程序执行前加上wait(0),使父进程接收到子进程结束的信号后才执行内容程序,从而实现了后执行父进程的效果。(三)编写一个管道应用程序(

6、父提供给子字符串)1.根据要求编写程序:#include#include#include//printf函数的头文件#include//exit函数的头文件#defineLINESIZE1024intmain(void){intn,fd[2];pid_tpid;charline[LINESIZE];if(pipe(fd)<0)//调用pipe()函数建立管道;{printf("pipeerror");//建立不成功则返回“pipeerror",并退出;exit(1);}if((pid=fork())<0)//

7、创建进程,创建不成功则返回"forkerror"并退出{printf("forkerror");exit(1);}elseif(pid>0)//父进程的fork()返回{close(fd[0]);//关闭管道读指针;printf("I'mfather~");//声明它是父进程write(fd[1],"putthestringintothepipe.",29);//将"putthestringintot

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。