#include
#include
#include
#include
#include
#include
#define MAX 1024
struct mymsg{
long int msgtype;
char buf[MAX];
};
int main()
{
int msg_type = 1;
int msgid = -1;
struct mymsg my_msg;
long int msgtype = 1;
// my_msg.msgtype = 1;
if((msgid = msgget((key_t)1234,0666|IPC_CREAT)) < 0){
fprintf(stderr,"msgget error:%s\n",strerror(errno));
return -1;
}else if(msgid == 0){
printf("create msg%d success\n",msgid);
}
while(1){
int size =0;
if((size = msgrcv(msgid,(void *)&my_msg , MAX, 1 ,0)) < 0){ //注意,这里的我类型是直接填1
fprintf(stderr,"msgrcv error :%s\n",strerror(errno));
return -1;
}
my_msg.buf[size] = '\0';
printf("receive from msgqueue :%s\n",my_msg.buf);
}
if(msgctl(msgid,IPC_RMID,0) < 0){
fprintf(stderr,"msgctnl error :%s\n",strerror(errno));
return -1;
}
}
这样老是出现msgrcv error : Identifier removed
把1改成(long int)1,强制转换成长整型1就行了