当消息队列传输数据时,程序运行没问题,但是return的时候会报错
原因:
假设定义结构体变量struct msgbuf buffer;
msgsnd和msgrcv中的msgsz参数,指的是buffer结构体变量中的mtext的大小,mtype并不包含在里面,所以msgsz传入sizeof(buffer),会导致msgsnd和msgrcv都会多一个long的大小,所以产生报错
解决方案:
1.将sizeof(buffer)改为sizeof(buffer)-sizeof(long)
2.将sizeof(buffer)改为sizeof(buffer.mtext)