客户进程
#include#include #include #include #include #define MSGKEY 75 struct msgform{//发送的内容 long mtype; char mtext[256]; }; int main(){ struct msgform msg; //装填自己的信息包,准备发送 msg.mtype=1; //制作mtext int *p; p=(int *)msg.mtext; int pid=getpid(); *p=pid;//往载荷中放上自己的ProcessId int msgpid=msgget(MSGKEY,0777); msgsnd(msgpid,&msg,sizeof(int),0);//发送 msgrcv(msgpid,&msg,256,pid,0);//接受信息 printf("客户机: 从%d服务器收到了应答n",* p);//取出载荷的内容并显示 return 0; }
服务器进程
#include#include #include #include #include #define MSGKEY 75 struct msgform{//发送的内容 long mtype; char mtext[256]; }; int msgpid; int main(){ extern cleanup(); for(int i=0;i<20;i++) signal(i,cleanup); //设置软中断信号处理程序 //====================== 监听========================== msgpid=msgget(MSGKEY,0777|IPC_CREAT); //初始化消息队列 for(;;){ //一直接收消息 struct msgform msg; msgrcv(msgpid,&msg,256,1,0);//接受信息 int *p=(int*)msg.mtext;//载荷指针 int pid=*p;//取出载荷的内容并显示 printf("服务器: 从%d收到了它自己发送的pidn",pid); //装填自己的信息包,准备发送 msg.mtype=pid; *p=getpid();//往载荷中放上自己的ProcessId msgsnd(msgpid,&msg,sizeof(int),0);//发送信息 } return 0; } cleanup(){ msgctl(msgpid,IPC_RMID,0); exit(1); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)