- 01_write.c:
- #include
- #define MAX 1024
-
- //x消息结构体
- typedef struct
- {
- long msgtype; //消息类型
- char msg[MAX]; //消息正文
- }Msg;
-
- #define SIZE sizeof(Msg)-sizeof(long) //正文大小
-
- int main(int argc, const char *argv[])
- {
- //1:创建一个key值
- key_t key;
- if((key = ftok("/",'k') )== -1)
- {
- perror("ftok error");
- return - 1;
- }
- //2:创建消息队列
- int msgid;
- if((msgid = msgget(key,IPC_CREAT|0664)) == -1)
- {
- perror("msgget error");
- return -1;
- }
- //3:向消息队列中发送数据
- Msg msg = {.msgtype = 100};
-
- while (1)
- {
- printf("请输入消息内容>>>>");
- fgets(msg.msg, sizeof(msg.msg), stdin);
- msg.msg[strlen(msg.msg) - 1] = '\0';
-
- //将消息发送到消息队列中
- if(msgsnd(msgid,&msg,SIZE,0) == -1)
- {
- perror("msgsnd error");
- return -1;
- }
- if(strcmp(msg.msg,"quit") == 0)
- {
- break;
- }
- //printf("%s\n", msg.msg);
- }
-
- return 0;
- }
-
- 02_read.c :
- #include
-
- #define MAX 1024
-
- //x消息结构体
- typedef struct
- {
- long msgtype; //消息类型
- char msg[MAX]; //消息正文
- }Msg;
-
- #define SIZE sizeof(Msg)-sizeof(long) //正文大小
-
- int main(int argc, const char *argv[])
- {
- //1:创建一个key值
- key_t key;
- if((key = ftok("/",'k') )== -1)
- {
- perror("ftok error");
- return - 1;
- }
- //2:创建消息队列
- int msgid;
- if((msgid = msgget(key,IPC_CREAT|0664)) == -1)
- {
- perror("msgget error");
- return -1;
- }
- //3:从消息队列中读取数据
- Msg msg;
-
- while (1)
- {
- if(msgrcv(msgid,&msg,SIZE,0,0) == -1)
- {
- perror("msgrcv error");
- return -1;
- }
- if(strcmp(msg.msg,"quit") == 0)
- {
- break;
- }
- //打印接收的数据
- printf("接收到数据为 :%s\n", msg.msg);
-
- }
- //4:删除消息队列
- msgctl(msgid,IPC_RMID,NULL);
-
- return 0;
- }