Вопрос

Я использую 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?

Это было полезно?

Решение

Вам просто нужно пройти адрес структуры и бросить его в соответствующий тип указателя: const 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);
.

Другие советы

Вы можете использовать memcpy следующим образом:

char * data; //Do appropriate allocation.

memcpy(data, &req, sizeof(req)));
.

на получении вы копируете полученные данные в структуру.

memcpy(&rec, data, sizeof(rec)));
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top