linux中的c语言编程-消息传递系统

linux中的c语言编程-消息传递系统

ID:22583414

大小:368.74 KB

页数:6页

时间:2018-10-30

linux中的c语言编程-消息传递系统_第1页
linux中的c语言编程-消息传递系统_第2页
linux中的c语言编程-消息传递系统_第3页
linux中的c语言编程-消息传递系统_第4页
linux中的c语言编程-消息传递系统_第5页
资源描述:

《linux中的c语言编程-消息传递系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、操作系统第五次实验张焓1.实验名称:项FH消息队列通信2.实验目的:服务进程奴有一个,接收个客户进程以消息形式发出的14题,接收键盘输入作为回答,再以消息形式送给提问的程序。各客户进程接收键盘输入作为问题,以消息形式发给服务进程,等待接收服务进程发来的回答消息,再开始下-•轮的循环。a.程序不停执行,直到用户川ctrl+c杀死进程b.程序不停执行,过到用户键入end,进程结朿执行3.实验方法(1>首先编写客广进程:妲含需要用到的头文件,并定义结构体msgform作为报文结构用于存放报文:^include#include^incl

2、ude#lnclude#includestructmsgform"longntype;charntext[256];};(2)作一些定义及声明:tntnain(){structnsgfornnsg;tntrunnlng=l;Intpid;tntnsgqid=-1,reval=-1;charbuffer[256];(3)创建消息队列,并添加必要的错误处理,标识码1234:nsgqld=nsgget((key_t)1234,0666

3、IPC_CREAT);if(nsgqid==-l){printf(Mnsgcre

4、ateerror!!");exU(EXIT-FAILURE);}(4)接收消息队列中的报文,添加必要的错误处理,并在屏幕打印接收到的报文消息,为了方便观察,我们在这甩顺带显示一下进程的pid。另外,在a情况下此段程序如阁,在b情况卜,将注释部分的注释符去掉即可:pid=getpid();nsg.ntype=0;while(running)If(nsgrcv(nsgqid>&nsg,256,ife)==-l){prlntf("client:nsgreceiveerror!!M);extt(EXIT-FAILURE);}prlntf("client:receive

5、fronpidXdyouwrite:XsM,pld,nsg.ntext);//if(strncnp(nsg.ntextf”end”,3)==0)//running=6;}(2)清空并删除消息队列,并且添加必要的错误处理:Iif(nsgctl(nsgqid,IPC_RMID,0)==-1)prlntf(MnsgctlfailedM);exit(EXIT^FAILURE);I}(3)如整个程序正常运行,则退出进程:extt(EXIT_SUCCESS);,(4)编写服务进程:包含需耍用到的尖文件,并定义结构体msgform作为报文结构用于存放报文(同⑴):#incl

6、ude^Include#tnclude井include#tnclude

7、structnsgforn{longntype;charntext[256];};⑻在服务进程中启动客户进程:intnain(){intchild;If((child=fork())==0){execlp(H./clientM,(char*)6);}(9)作一些定义及声明:structnsgfornnsg;intrunning=l;intpld;intnsgqld=-1freval=-1;charb

8、uffer[256];(10)创建消息队列,并添加必要的错误处理,标识码1234:nsgqld=nsgget((key^t)1234,0666丨IPC^CREAT);if(nsgqid==-l){printf(wnsgcreateerror!!");extt(EXITFAILURE);}'(11)从键盘输入一组字符串,存入临吋的字符串数组作为报文内容,并定义报文类型。为方便观察,在屏幕打印服务进程接收到的信总的报文消思,为了方便观察,我们在这里顺带显示一下进程的pid:pid=getpid();nsg.ntype=0;while(runnlng){printf(w

9、enter:w);fgets(Guffer2S6,st(Hn);prtntf(Hserver:receiveftorpidXdyouwrite:XsM,pidfbuffer);strcpyCnsg.ntext,buffer);nsg.ntype=l;(9)将报文写入到消息队列中的,添加必耍的错误处理。另外,在a情况下此段程序如图,在b情况下,将注释部分的注释符去掉即可:if(nsgsnd(nsgqxd,&nsg,256,0)==-1){printf(Mnsgsenderror!!’);CXit(EXITFAILURE);}//If(strn

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

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

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