إرسال البنية في مق_إرسال
سؤال
أنا باستخدام بوسيكس إيبك وفقا للوثائق - 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.لا تنتمي إلى StackOverflow