- 论坛徽章:
- 0
|
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define BUFSZ 512
typedef struct message
{
long msg_type;
char msg_text[BUFSZ];
}MSG;
int main()
{
int qid;
key_t key;
MSG mque;
int len;
if((key = ftok(".",'a')) < 0)
{
perror("ftok\n");
exit(0);
}
if((qid = msgget(key,IPC_CREAT|0666)) < 0)
{
perror("msgget\n");
exit(0);
}
else
printf("Open queue %d\n",qid);
puts("please input you message in queue\n");
if(fgets(mque.msg_text, BUFSZ,stdin) == NULL)
{
perror("message\n");
exit(0);
}
printf("massage is %s\n",mque.msg_text); //在这里输出的也是输入的字符串 啊?
mque.msg_type = getpid();
len = strlen(mque.msg_text);
if(msgsnd(qid,&mque,len,0) < 0)
{
perror("msgsnd\n");
exit(0);
}
if(msgrcv(qid,&mque,len,0,0) < 0)
{
perror("msgrcv\n");
exit(0);
}
printf("massage is %s\n",mque.msg_text); //在这里再输出那怎么知道消息队列起作用了呢?
if(msgctl(qid,IPC_RMID,NULL) < 0)
{
perror("msgctl\n");
exit(1);
}
exit(0);
}
两个注释就是我的问题所在 |
|