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?

È stato utile?

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
scroll top