資源簡介
實(shí)驗(yàn)?zāi)康模毫私夂褪煜inux支持的消息通信機(jī)制。
任務(wù):使用linux系統(tǒng)提供的系統(tǒng)調(diào)用msgget(),msgrev(),msgctl()編制一個(gè)長度為1K的消息發(fā)送和接受的程序。
實(shí)驗(yàn)要求:
(1)用一個(gè)程序作為“引子”,先后fork()兩個(gè)進(jìn)程,SERVER和CLIENT,進(jìn)行通信。
(2)SERVER端建立一個(gè)Key為75的消息隊(duì)列,等待其他進(jìn)程發(fā)來的消息。當(dāng)遇到類型為1的消息,則作為結(jié)束信號,取消該隊(duì)列,并退出SERVER。SERVER每接受到一個(gè)消息后顯示一句“(Server)received”。
(3)CLIENT端使用key為75的消息隊(duì)列,先后發(fā)送類型從10到1的消息,然后退出。最后一個(gè)消息,即是SERVER端需要的結(jié)束信號。CLIENT每發(fā)送一條消息后顯示一句“(Client)sent”。
(4)父進(jìn)程在SERVER和CLIENT都退出后結(jié)束。
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#define?SHMKEY?75?????????/*定義共享區(qū)關(guān)鍵詞*/
int?msgidp1p2;
struct?msgform
{
long?mtype;
char?mtext[1030];
}msgp;
?r:?stray?‘\357’?in?program
void?CLIENT()
{
int?i;
msgid=msgget(SHMKEY0777);//創(chuàng)建消息隊(duì)列
for(i=10;i>=1;i--)
{
msgp.mtype=i;
printf(“(client)sent\n“);??????????
/*打?。╟lient)sent*/
msgsnd(msgid?&msgp?10240);
//發(fā)送消息
}
exit(0);
}
void?SERVER()
{
msgid=msgget(SHMKEY077
評論
共有 條評論