MQ_SENDの構造体を送信します
質問
POSIX IPCを使用しており、ドキュメント - http://man7.org/linux/man-pages/man3/mq_send.3.html
mq_send()メソッドはchar * dataを送信し、mq_recv()は文字データのみを受け取ります。 ただし、MSGキューにカスタム構造体を送信し、受信側で、構造体を取得したいです。
サンプル構造:
struc Req
{
pid_t pid;
char data[4096];
}
.
だから、誰もがC Langでこれを達成する方法を知っていますか?
解決
構造体のアドレスを渡して適切なポインタ型にキャストするだけで済みます.condicetagcode for mq_send
の場合はchar *。
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