我正在使用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)));
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top