消息队列的结构体定义问题
先看看消息队列的消息机构体及读写方式
// 消息结构体
struct msg {
long msg_len;
long msg_type;
char msg_data[1024];
};
// 写入消息
msgsnd(mqid, &(msg.msg_type), msg.msg_len, 0)
// 读出消息
msgrcv(mqid, &(msg.msg_type), 1024, msg.msg_type, 0)
这种写法传递的消息是正确的,能不能解释一下?
我的想法: msg_len根本就没有写入消息,而且从msg_type的地址开始写(struct的内存分配是连续的?),msg_type和msg_data写入了消息队列, 其实跟下面的写法是一样的
// 消息结构体
struct msg {
long msg_type;
char msg_data[1024];
};
// 写入消息
msgsnd(mqid, &msg, 1024, 0)
// 读出消息
msgrcv(mqid, &msg, 1024, msgtype, 0)
问题源于: http://blog.chinaunix.net/u1/40816/showart_323560.html