操作系统进程通信管理(2)

2021-01-26 23:35

while(msg.,mytype!=1);

msgctl(msgqid,IPC_RMID,0);

}

main()

{

if (fork())

{

SERVER();

wait(0);

}

else CLIENT();

}

实验结果

从理想实验结果来说,应当每一个Client发送一个消息后,Server接收该消息,Client 再发送下一条消息,也就是说“(Client)sent”和“(Serve)received”的字样应该在屏幕上交替出现。实际上结果是由Client先发送10条消息,然后erver接收10条消息,与预期的结果不同。

《实验分析》

Message的传送与控制并不保证完全同步,当一个程序不在激活的状态的时候,它完全可以继续睡眠,造成上面现象,在多次sendmessage后才receive message。这一点有助于理解消息转送的实现机理。

②调用msgctl ( )删除队列,并清除队列中的所有消息,归还资料。

《程序》

#include<sys/type.h>

#include<sys/msg.h>

#include<sys/ipc.h>

#define MSGEKEY 75 /*定义共享区关键词MSGEKEY */

int shmid,i;

int *addr;

CLIENT()

{

int ;

shmid=shmget(SHMKEY,1024,0777|IPC_CREAT);

addr=shmat(shmid,0,0);

for(i=9;i>=0;i--)

{

while(*addr!=-1);

Printf(“(client)sentin”);

*addr=i;

}

exit(0);

}


操作系统进程通信管理(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于单片机10通道数据采集系统设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: