Invia struttura in mq_send
Domanda
Sto usando Posix IPC e secondo la documentazione - http://man7.org/linux/man-pages/man3/mq_send.3.html
MQ_SEND () Metodo invia solo dati Char * e MQ_RECV () riceve solo i dati dei caratteri. Tuttavia, voglio inviare una struttura personalizzata alla mia coda MSG e all'estremità ricevente, voglio ottenere la struttura.
Struttura del campione:
struc Req
{
pid_t pid;
char data[4096];
}
.
Allora, qualcuno sa come realizzare questo in c lang?
Soluzione
Hai solo bisogno di superare l'indirizzo della struttura e gettarlo al tipo di puntatore appropriato: Const Char * per mq_send
e Char * per 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);
. Altri suggerimenti
È possibile utilizzare MemCPY come segue:
char * data; //Do appropriate allocation.
memcpy(data, &req, sizeof(req)));
.
Sul ricevimento di essere copiati i dati ricevuti in struttura.
memcpy(&rec, data, sizeof(rec)));
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow