envoyer la structure dans mq_send
Question
J'utilise POSIX IPC et selon la documentation - http://man7.org/linux/man-pages/man3/mq_send.3.html
La méthode mq_send() envoie uniquement des données char* et mq_recv() ne reçoit que des données de caractères.Cependant, je souhaite envoyer une structure personnalisée à ma file d'attente de messages et du côté de la réception, je souhaite obtenir la structure.
exemple de structure :
struc Req
{
pid_t pid;
char data[4096];
}
Alors, est-ce que quelqu'un sait comment accomplir cela en langage C ?
La solution
Il vous suffit de transmettre l'adresse de la structure et de la convertir en type de pointeur approprié :const char * pour mq_send
et char * pour 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);
Autres conseils
Vous pouvez utiliser MEMCY comme suit:
char * data; //Do appropriate allocation.
memcpy(data, &req, sizeof(req)));
sur la réception de vous copier des données reçues dans la structure.
memcpy(&rec, data, sizeof(rec)));