- #include<myhead.h>
-
- #define ERR(msg) do{\
- fprintf(stderr, "__%d__:", __LINE__);\
- perror(msg);\
- }while(0);
-
- typedef struct msgbuf{
- long msgtype;
- char data[1024];
- }Msg_m;
-
- #define SIZE sizeof(Msg_m)-sizeof(long)
-
- int main(int argc, const char *argv[])
- {
- //1、获得key值函数
- key_t key = ftok("./",'a');
- if(key < 0)
- {
- ERR("ftok");
- return -1;
- }
-
- //2、创建一个消息队列对象
- int msgid = msgget(key,IPC_CREAT|0664);
- if(msgid < 0)
- {
- ERR("msgget");
- return -1;
- }
-
- //3、向消息队列中发送数据
- Msg_m msg = {.msgtype = 100};
-
- while(1)
- {
- printf("请输入你要发送的内容>>>");
- fgets(msg.data,sizeof(msg.data),stdin);
- //将最后一个'\n'转换成'\0'
- msg.data[strlen(msg.data)-1]=0;
- if(msgsnd(msgid,&msg,SIZE,0) == -1)
- {
- ERR("msgsnd");
- return -1;
- }
- if(strcmp(msg.data,"quit") == 0)
- {
- break;
- }
- }
-
- return 0;
- }
- #include<myhead.h>
-
- #define ERR(msg) do{\
- fprintf(stderr, "__%d__:", __LINE__);\
- perror(msg);\
- }while(0);
-
- typedef struct msgbuf{
- long msgtype;
- char data[1024];
- }Msg_m;
-
- #define SIZE sizeof(Msg_m)-sizeof(long)
-
- int main(int argc, const char *argv[])
- {
- //1、创建一个key值
- int key;
- if((key = ftok("./",'a')) < 0)
- {
- ERR("stok");
- return -1;
- }
-
- //2、创建消息队列,如果已经创建则打开
- int msgid;
- if((msgid = msgget(key,IPC_CREAT|0664)) == -1)
- {
- ERR("msgget");
- return -1;
- }
-
- //3、从消息队列中读取数据
- Msg_m msg;
- while(1)
- {
- if(msgrcv(msgid,&msg,SIZE,0,0) == -1)
- {
- ERR("msgrcv");
- return -1;
- }
- if(strcmp(msg.data,"quit") == 0)
- {
- break;
- }
- printf("接收信息为:%s\n",msg.data);
- }
-
- //4、删除消息队列
- msgctl(msgid,IPC_RMID,NULL);
-
- return 0;
- }
