Отправить структуру в MQ_Send
Вопрос
Я использую 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)));
. Не связан с StackOverflow