我正在使用POSIX IPC并根据文档 - http://man7.org/linux/man-pages/man3/mq_send.3.html
mq_send()方法仅发送char *数据,而mq_recv()仅接收字符数据。 但是,我想将自定义结构发送到我的msg队列,并且在接收端,我想获取结构。
示例结构:
struc Req
{
pid_t pid;
char data[4096];
}
那么,有没有人知道如何在C lang中实现这一目标?
答案 0 :(得分:12)
您只需要传递结构的地址并将其转换为适当的指针类型:{char} *表示mq_send
而char *表示mq_receive
。
typedef struct Req
{
pid_t pid;
char data[4096];
} Req;
Req buf;
n = mq_receive(mqdes0, (char *) &buf, sizeof(buf), NULL);
mq_send(mqdes1, (const char *) &buf, sizeof(buf), 0);
答案 1 :(得分:-2)
您可以按如下方式使用memcpy:
char * data; //Do appropriate allocation.
memcpy(data, &req, sizeof(req)));
收到后,您将收到的数据复制到struct。
memcpy(&rec, data, sizeof(rec)));