- 论坛徽章:
- 0
|
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/msg.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#define MFILE "/tmp/msg_log"
#define LOGTYPE 1
struct msg_log{
int mtype;
char data[20];
};
int main(void)
{
key_t key;
int msgid;
int ret;
struct msg_log msg_buf;
//创建queue
key = ftok(MFILE,'l');
printf("ftok error = %d\n",errno);
if((msgid = msgget(key,IPC_CREAT|0666)) == -1){
printf("create error\n");
exit(EXIT_FAILURE);
}
printf("errno = %d\n",errno);
msg_buf.mtype = LOGTYPE;
strcpy(msg_buf.data, "xxxx");
msgsnd(msgid, &msg_buf, sizeof(msg_buf.data), IPC_NOWAIT);
printf("errno = %d\n",errno);
memset(&msg_buf,'\0',sizeof(msg_buf));
printf("msgid = %d\n",msgid);
if((ret = msgrcv(msgid, &msg_buf, sizeof(msg_buf.data), LOGTYPE, IPC_NOWAIT)) > 0){
printf("ret = %d, log.data = %s\n",ret,msg_buf.data);
}
printf("errno = %d\n",errno);
exit(EXIT_SUCCESS);
}
程序运行完结果是
ftok error = 0
errno = 0
errno = 0
msgid = 32769
errno = 42
为什么我从消息队列里面读不到数据!!!!!!!!!!
我在ubuntu桌面版可以正常运行,但是在centos,和ubuntu 服务器版都出现上面的错误。 |
|