資源簡介
實驗目的:了解和熟悉linux支持的消息通信機制。
任務:使用linux系統提供的系統調用msgget(),msgrev(),msgctl()編制一個長度為1K的消息發送和接受的程序。
實驗要求:
(1)用一個程序作為“引子”,先后fork()兩個進程,SERVER和CLIENT,進行通信。
(2)SERVER端建立一個Key為75的消息隊列,等待其他進程發來的消息。當遇到類型為1的消息,則作為結束信號,取消該隊列,并退出SERVER。SERVER每接受到一個消息后顯示一句“(Server)received”。
(3)CLIENT端使用key為75的消息隊列,先后發送類型從10到1的消息,然后退出。最后一個消息,即是SERVER端需要的結束信號。CLIENT每發送一條消息后顯示一句“(Client)sent”。
(4)父進程在SERVER和CLIENT都退出后結束。
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#define?SHMKEY?75?????????/*定義共享區關鍵詞*/
int?msgidp1p2;
struct?msgform
{
long?mtype;
char?mtext[1030];
}msgp;
?r:?stray?‘\357’?in?program
void?CLIENT()
{
int?i;
msgid=msgget(SHMKEY0777);//創建消息隊列
for(i=10;i>=1;i--)
{
msgp.mtype=i;
printf(“(client)sent\n“);??????????
/*打印(client)sent*/
msgsnd(msgid?&msgp?10240);
//發送消息
}
exit(0);
}
void?SERVER()
{
msgid=msgget(SHMKEY077
- 上一篇:net并發數據結構讀寫鎖
- 下一篇:超市商品信息管理系統
評論
共有 條評論