系統(tǒng)運維
注意事項:
未央網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。linux(2.4.22)限制:
可發(fā)送最長消息字節(jié)數(shù)為8192 隊列容量字節(jié)數(shù) 16384 隊列隊列容量數(shù) 16key_t ftok(char* path,int id)使用說明:
其它的注意就查看一下unix高級環(huán)境編程吧,或者有些問題需要討論就回我吧!!
server.c
#include"msg.h"#include#include #include intmain(intargc,char**argv){intqueid=open_msg("/root",100);while(1){fputs("請輸入要發(fā)送的類型:1or2\\n",stdout);inttype;scanf("%d",&type);switch(type){caseMYTYPE_ONE:{msg_send(queid,"MYTYPE_ONE",MYTYPE_ONE);break;}caseMYTYPE_TWO:{msg_send(queid,"MYTYPE_TWO",MYTYPE_TWO);break;}default:{fputs("輸入類型錯誤,請重新輸入\\n",stdout);break;}}fputs("輸入:q為退出,其它表示繼續(xù)\\n",stdout);if(getchar()==\'q\'){fputs("退出成功!\\n",stdout);break;}else{fputs("繼續(xù)發(fā)送消息\\n",stdout);}}//不發(fā)送退出需要獎隊列移除del_que(queid);return0;}
client.c
#include"msg.h"#include#include #include intmain(intargc,char**argv){intqueid=open_msg("/root",100);while(1){fputs("請接收要發(fā)送的類型:1or2\\n",stdout);inttype;scanf("%d",&type);switch(type){caseMYTYPE_ONE:{msg_rec(queid,MYTYPE_ONE);break;}caseMYTYPE_TWO:{msg_rec(queid,MYTYPE_TWO);break;}default:{fputs("輸入類型錯誤,請重新輸入\\n",stdout);break;}}fputs("輸入:q為退出,其它表示繼續(xù)\\n",stdout);if(getchar()==\'q\'){fputs("退出成功!\\n",stdout);break;}else{fputs("繼續(xù)發(fā)送消息\\n",stdout);}}//隊列移除del_que(queid);return0;}
msg.c
#include#include #include #include #include #include #include #include"msg.h"http://如果存在隊列則打開,沒有則創(chuàng)建intopen_msg(char*path,intid){//獲取IPC對象的一個鍵key_tkey=ftok(path,id);if(-1==key){perror("ftok\\n");exit(1);}//創(chuàng)建一個隊列intqueid=msgget(key,IPC_CREAT|0666);if(-1==queid){perror("msgget\\n");exit(1);}returnqueid;}//發(fā)送消息到隊列voidmsg_send(key_tkey,char*text,longmsgtype){//初始化內(nèi)容structMSGtmp;memset(&tmp,sizeof(structMSG),0);tmp.mytype=msgtype;strcpy(tmp.mytext,text);//發(fā)送消息if(msgsnd(key,&tmp,TEXTSIZE,0)){perror("msgsnd\\n");exit(1);}}//從消息隊列獲取消息并顯示voidmsg_rec(key_tkey,longmsgtype){structMSGtmp;if(-1==msgrcv(key,&tmp,TEXTSIZE,msgtype,MSG_NOERROR)){perror("msgrcv\\n");exit(1);}printf("receivecontent:%s\\n",tmp.mytext);}//刪除隊列,即使隊列里面還有消息也一起刪除voiddel_que(key_tkey){if(msgctl(key,IPC_RMID,NULL)){perror("msgsnd\\n");exit(1);}}
msg.h
#ifndefMSG_H#defineMSG_H#include附件:http://down.51cto.com/data/2362206#defineTEXTSIZE100#defineARRYSIZE2#defineMYTYPE_ONE1#defineMYTYPE_TWO2structMSG{longmytype;charmytext[TEXTSIZE];};intopen_msg(char*,int);voidmsg_send(key_t,char*,long);#endif//endMSG_H