سؤال

أنا باستخدام بوسيكس إيبك وفقا للوثائق - http://man7.org/linux/man-pages/man3/mq_send.3.html

طريقة مق_سيند () يرسل فقط شار * البيانات و مق_ريكف () يتلقى بيانات الأحرف فقط.ومع ذلك ، أريد إرسال بنية مخصصة إلى قائمة انتظار الرسائل الخاصة بي وعلى الطرف المتلقي ، أريد الحصول على البنية.

هيكل العينة:

struc Req
{
  pid_t pid;
  char data[4096];
}

وبالتالي, لا أحد يعرف كيفية تحقيق ذلك في ج لانج?

هل كانت مفيدة؟

المحلول

تحتاج فقط لتمرير عنوان البنية ويلقي به إلى نوع المؤشر المناسب:كونست شار * ل mq_send وشار * ل 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);

نصائح أخرى

يمكنك استخدام MEMCPY على النحو التالي:

giveacodicetagpre.

على تلقي لك نسخ البيانات المستلمة في بنية.

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top