消息队列程序源码

更新时间:2023-05-18 07:15:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

消息队列程序源码

程序A

#include <stdio.h>

#include <string.h>

#include <sys/ipc.h>

#include <sys/msg.h>

#define MSG_SIZE 32

#define MSG_TYPE 1

struct mymsgbuf

{

long mtype; //REQUIRED

char infos[MSG_SIZE];

};

int main()

{

key_t key = ftok("/home/cookie/msgqueue/Makefile", 1); int msgqueue = msgget(key, 0666);

if(msgqueue == -1)

{

printf("Message Queue Open Failed");

return -1;

}

struct mymsgbuf msg_put;

msg_put.mtype = MSG_TYPE;

memset(msg_s, 0, MSG_SIZE);

fgets(msg_s, MSG_SIZE, stdin);

if(msgsnd(msgqueue, &msg_put, MSG_SIZE, 0) == -1)

{

printf("Send Message Failed");

msgctl(msgqueue, IPC_RMID, NULL);

return -1;

}

struct mymsgbuf msg_get;

if(msgrcv(msgqueue, &msg_get, MSG_SIZE, MSG_TYPE, 0) == -1) {

printf("Receive Message Failed");

msgctl(msgqueue, IPC_RMID, NULL);

return -1;

}

printf("%s\n", msg_s);

msgctl(msgqueue, IPC_RMID, NULL);

return 0;

}

程序B

#include <stdio.h>

#include <stdlib.h> //atof()

#include <string.h>

#include <sys/ipc.h>

#include <sys/msg.h>

#define MSG_SIZE 32

#define MSG_TYPE 1

struct mymsgbuf

{

long mtype; //REQUIRED

char infos[MSG_SIZE];

};

int main()

{

key_t key = ftok("/home/cookie/msgqueue/Makefile", 1); int msgqueue = msgget(key, IPC_CREAT|IPC_EXCL|0666); if(msgqueue == -1)

{

printf("Message Queue Creation Failed");

return -1;

}

struct mymsgbuf msg_get;

if(msgrcv(msgqueue, &msg_get, MSG_SIZE, MSG_TYPE, 0) == -1) {

printf("Receive Message Failed");

return -1;

}

char* op;

struct mymsgbuf msg_put;

msg_put.mtype = MSG_TYPE;

memset(msg_s, 0, MSG_SIZE);

if((op = strchr(msg_s,'+')) != NULL)

{

float a = atof(msg_s);

float b = atof(op + 1);

float res = a + b;

sprintf(msg_s, "%f", res);

} } else if((op = strchr(msg_s,'-')) != NULL) { float a = atof(msg_s); float b = atof(op + 1); float res = a - b; sprintf(msg_s, "%f", res); } else sprintf(msg_s, "Wrong Format"); if(msgsnd(msgqueue, &msg_put, MSG_SIZE, 0) == -1) { printf("Send Message Failed"); return -1; } return 0;

本文来源:https://www.bwwdw.com/article/ggs4.html

Top