在mq_send中发送struct

Vin*_*rma 10 c linux posix ipc mqueue

我正在使用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];
}
Run Code Online (Sandbox Code Playgroud)

那么,有谁知道如何在C lang中实现这一目标?

Duc*_*uck 15

您只需要传递结构的地址并将其转换为适当的指针类型:const char*for mq_send和char*for 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);
Run Code Online (Sandbox Code Playgroud)