msgrcv(msgid,&msg,sizeof(msg),0,0);
问题出在这一句,你给的长度是整个结构体的长度,也就是会读260个字符到&msg中
但是按照UC消息队列的机制,这260个字符时不计算mtype在内的,也就是你这260个字符都会被写在buf[]中,会导致栈溢出
同理
msgsnd(msgid,&msg1,sizeof(msg1),0);
也存在问题,只是对溢出的四个字节是读 应该没有问题
msgrcv就不同了
应该是字符串没有结束符'\0'
结构体要初始化 MSG msg = {0};
dsaaas
按你的程序进行了测试,没有发现问题啊,不知道你的linux 和gcc版本是什么?