题
我正在使用posix ipc,并根据文档 - http:// man7.org/linux/man -pages/man3/mq_send.3.html
mq_send()方法只发送char * data和mq_recv()只收到字符数据。 但是,我想向我的MSG队列和接收端发送自定义结构,我想获得结构。
样本结构:
struc Req
{
pid_t pid;
char data[4096];
}
.
所以,有谁知道如何在c lang完成这一点吗?
解决方案
您只需通过struct的地址并将其投入到适当的指针类型:for mq_send
和char * for mq_receive
的const char *。
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);
. 其他提示
您可以使用memcpy如下:
char * data; //Do appropriate allocation.
memcpy(data, &req, sizeof(req)));
.
接收您将收到的数据复制到结构中。
memcpy(&rec, data, sizeof(rec)));
. 不隶属于 StackOverflow