質問

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)));
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top