linux多进程和进程间通信.docx

linux多进程和进程间通信.docx

ID:58149793

大小:191.27 KB

页数:8页

时间:2020-04-25

linux多进程和进程间通信.docx_第1页
linux多进程和进程间通信.docx_第2页
linux多进程和进程间通信.docx_第3页
linux多进程和进程间通信.docx_第4页
linux多进程和进程间通信.docx_第5页
资源描述:

《linux多进程和进程间通信.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、物联网学院2015/2016学年第1学期实验报告课程名称:linux编程基础实验名称:linux多进程和进程间通信班级学号:学生姓名: 指导教师 日期:2015年12月实验六linux多进程与进程间通信一、实验目的熟悉linux系统编程方法熟悉linux常用的系统调用二、实验环境PC机一台安装虚拟机版的linux操作系统一台三、实验预习熟悉进程创建/线程创建系统调用熟悉进程间通信系统的调用一、实验内容Linuxfork调用进程间通信系统调用:管道通信二、实验步骤编写一个程序,实现如下功能:创建两个子进程,父进程向管道中按照顺序输入数字123456……,另外两个子进程

2、分别从管道中按照顺序读出奇数和偶数,及子进程1读出的数据应该是13579……,而子进程读出的数据应该是246810……数据,要求按先读奇数,再读偶数的顺序进行程序代码如下:#include#include#include#includeintpid1,pid2;main(){intfd[2],i=0,j=0;charoutpipe[100],inpipe1[100],inpipe2[100],outpipe1[100];pipe(fd);/*创建一个管道*/while((pid1=fork

3、())==-1);/*向管道中写入字符*/lockf(fd[1],1,0);sprintf(outpipe,"");write(fd[1],outpipe,50);lockf(fd[1],0,0);/*----------------------------------*//*子进程1先读取管道中所有的字符,再重新把不需要的字符写入管道*/if(pid1==0){lockf(fd[0],1,0);read(fd[0],inpipe1,10);for(i=0;i<10;i++)//把不需要的字符写入管道{if(i%2){outpipe1[j]=inpipe1[i];j

4、++;}}lockf(fd[1],1,0);write(fd[1],outpipe1,5);lockf(fd[1],0,0);//写入结束sleep(5);/*自我阻塞5秒*/lockf(fd[0],0,0);exit(0);}/*--------------------------------------------------*/else{/*子进程2从管道中读取字符*/while((pid2=fork())==-1);if(pid2==0){{lockf(fd[0],1,0);/*互斥*/read(fd[0],inpipe2,5);lockf(fd[0],0,

5、0);}sleep(5);lockf(fd[0],0,0);exit(0);}/*读取结束*/else{wait(0);/*同步*/read(fd[0],inpipe2,10);/*从管道中读长为50字节的串*/printf("inpipe2%s",inpipe2);wait(0);read(fd[0],inpipe1,10);printf("inpipe1%s",inpipe1);exit(0);}}}实验结果如下:一、实验思考(1)、多进程与多线程相比,各自的优点和缺点是什么?多进程多线程优点内存隔离,单个进程的异常不会导致整个应用的崩溃。方便调试。提高

6、系统的并行性,并且开销小。缺点进程间调用,通讯和切换开销均比多线程大。没有内存隔离,单个线程的崩溃会导致整个应用过的退出,有错误使不易定位。(2)、多线程的性能是否一定比多进程的性能好?如果不是,请举例说明。不一定,在目标子动能交互少的情况下,用多进程更好。

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

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

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