<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Linuxのトピックmsgrcvに渡すバッファサイズ</title>
    <link>https://community.hpe.com/t5/linux/msgrcv%E3%81%AB%E6%B8%A1%E3%81%99%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%B5%E3%82%A4%E3%82%BA/m-p/1181164#M171</link>
    <description>コメントありがとうございます&lt;BR /&gt;&lt;BR /&gt;以下の様にちょっと修正してみました&lt;BR /&gt;&lt;BR /&gt;やはりdefineした65519を65520にすると動きません&lt;BR /&gt;&lt;BR /&gt;カーネルのパラメータに設定した65535に&lt;BR /&gt;&lt;BR /&gt;mtypeが含まれているとしても65520で失敗する理由がわからないのです&lt;BR /&gt;&lt;BR /&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;SYS&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;SYS&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;ERRNO.H&gt;&lt;BR /&gt;&lt;BR /&gt;#define MSG_SIZE 65519&lt;BR /&gt;&lt;BR /&gt;int main() {&lt;BR /&gt;&lt;BR /&gt;  int key=12345;&lt;BR /&gt;&lt;BR /&gt;  int msgid;&lt;BR /&gt;&lt;BR /&gt;  int iret;&lt;BR /&gt;&lt;BR /&gt;  long msgtyp=1;&lt;BR /&gt;&lt;BR /&gt;  struct msgbuf {&lt;BR /&gt;&lt;BR /&gt;    long mtype;&lt;BR /&gt;&lt;BR /&gt;    char mtext;  /* message data */&lt;BR /&gt;&lt;BR /&gt;  }buff;&lt;BR /&gt;&lt;BR /&gt;  msgid=msgget(key, IPC_CREAT|0666);&lt;BR /&gt;&lt;BR /&gt;  iret=msgrcv(msgid, &amp;amp;buff, &lt;BR /&gt;&lt;BR /&gt;              MSG_SIZE, msgtyp, 0);&lt;BR /&gt;&lt;BR /&gt;  if (iret&amp;lt;0) {&lt;BR /&gt;&lt;BR /&gt;    perror("msgrcv");&lt;BR /&gt;&lt;BR /&gt;  }&lt;BR /&gt;&lt;BR /&gt;  return 0;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/ERRNO.H&gt;&lt;/SYS&gt;&lt;/SYS&gt;&lt;/STDIO.H&gt;</description>
    <pubDate>Wed, 09 May 2007 03:04:17 GMT</pubDate>
    <dc:creator>ハット</dc:creator>
    <dc:date>2007-05-09T03:04:17Z</dc:date>
    <item>
      <title>msgrcvに渡すバッファサイズ</title>
      <link>https://community.hpe.com/t5/linux/msgrcv%E3%81%AB%E6%B8%A1%E3%81%99%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%B5%E3%82%A4%E3%82%BA/m-p/1181162#M169</link>
      <description>初めて投稿させて頂きます。&lt;BR /&gt;&lt;BR /&gt;以下のソースコードをRedHat Linux ES3 update3 上のGCCで&lt;BR /&gt;&lt;BR /&gt;コンパイルして実行すると、ちゃんとメッセージ受信を待つ&lt;BR /&gt;&lt;BR /&gt;ことができるのですが、msgrcvの第３引数の65519を65520に&lt;BR /&gt;&lt;BR /&gt;すると、引数が不正ということでmsgrcvが失敗してしまいます&lt;BR /&gt;&lt;BR /&gt;カーネルのパラメータは&lt;BR /&gt;&lt;BR /&gt;/proc/sys/kernel/msgmnb が 65535&lt;BR /&gt;&lt;BR /&gt;/proc/sys/kernel/msgmax が 65535&lt;BR /&gt;&lt;BR /&gt;になっており、引数としては65535まで渡せると考えていました。&lt;BR /&gt;&lt;BR /&gt;なにかご存じの方がいらっしゃれば、コメントをいただけると&lt;BR /&gt;&lt;BR /&gt;助かります&lt;BR /&gt;&lt;BR /&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;SYS&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;SYS&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;ERRNO.H&gt;&lt;BR /&gt;&lt;BR /&gt;int main() {&lt;BR /&gt;&lt;BR /&gt;  int key=12345;&lt;BR /&gt;&lt;BR /&gt;  int msgid;&lt;BR /&gt;&lt;BR /&gt;  int iret;&lt;BR /&gt;&lt;BR /&gt;  int ii=1;&lt;BR /&gt;&lt;BR /&gt;  char buff;&lt;BR /&gt;&lt;BR /&gt;  msgid=msgget(key, IPC_CREAT|0666);&lt;BR /&gt;&lt;BR /&gt;  iret=msgrcv(msgid, buff, &lt;BR /&gt;&lt;BR /&gt;              65519, ii, 0);&lt;BR /&gt;&lt;BR /&gt;  if (iret&amp;lt;0) {&lt;BR /&gt;&lt;BR /&gt;    perror("msgrcv");&lt;BR /&gt;&lt;BR /&gt;  }&lt;BR /&gt;&lt;BR /&gt;  return 0;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/ERRNO.H&gt;&lt;/SYS&gt;&lt;/SYS&gt;&lt;/STDIO.H&gt;</description>
      <pubDate>Tue, 08 May 2007 10:25:31 GMT</pubDate>
      <guid>https://community.hpe.com/t5/linux/msgrcv%E3%81%AB%E6%B8%A1%E3%81%99%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%B5%E3%82%A4%E3%82%BA/m-p/1181162#M169</guid>
      <dc:creator>ハット</dc:creator>
      <dc:date>2007-05-08T10:25:31Z</dc:date>
    </item>
    <item>
      <title>msgrcvに渡すバッファサイズ</title>
      <link>https://community.hpe.com/t5/linux/msgrcv%E3%81%AB%E6%B8%A1%E3%81%99%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%B5%E3%82%A4%E3%82%BA/m-p/1181163#M170</link>
      <description>ES4環境がないため正確なことは言えませんが、&lt;BR /&gt;&lt;BR /&gt;受信用エリアbuffの使い方が誤っていませんか？&lt;BR /&gt;&lt;BR /&gt;受信用エリアbuffはchar型ではなく、&lt;BR /&gt;&lt;BR /&gt;struct msgbuf型のはずです。&lt;BR /&gt;&lt;BR /&gt;「struct msgbuf {&lt;BR /&gt;&lt;BR /&gt;    long mtype;  &lt;BR /&gt;&lt;BR /&gt;    char mtext&lt;X&gt;;  /* message data */&lt;BR /&gt;&lt;BR /&gt; };」&lt;BR /&gt;&lt;BR /&gt;smgrcvは&lt;BR /&gt;&lt;BR /&gt;「ssize_t  msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp,int msgflg);」&lt;BR /&gt;&lt;BR /&gt;なので、とりあえずmtypeの値等をみなおしてみてはいかがですか？&lt;BR /&gt;&lt;BR /&gt;&lt;/X&gt;</description>
      <pubDate>Wed, 09 May 2007 01:57:00 GMT</pubDate>
      <guid>https://community.hpe.com/t5/linux/msgrcv%E3%81%AB%E6%B8%A1%E3%81%99%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%B5%E3%82%A4%E3%82%BA/m-p/1181163#M170</guid>
      <dc:creator>’¬“c�•�Žu</dc:creator>
      <dc:date>2007-05-09T01:57:00Z</dc:date>
    </item>
    <item>
      <title>msgrcvに渡すバッファサイズ</title>
      <link>https://community.hpe.com/t5/linux/msgrcv%E3%81%AB%E6%B8%A1%E3%81%99%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%B5%E3%82%A4%E3%82%BA/m-p/1181164#M171</link>
      <description>コメントありがとうございます&lt;BR /&gt;&lt;BR /&gt;以下の様にちょっと修正してみました&lt;BR /&gt;&lt;BR /&gt;やはりdefineした65519を65520にすると動きません&lt;BR /&gt;&lt;BR /&gt;カーネルのパラメータに設定した65535に&lt;BR /&gt;&lt;BR /&gt;mtypeが含まれているとしても65520で失敗する理由がわからないのです&lt;BR /&gt;&lt;BR /&gt;#include &lt;STDIO.H&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;SYS&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;SYS&gt;&lt;BR /&gt;&lt;BR /&gt;#include &lt;ERRNO.H&gt;&lt;BR /&gt;&lt;BR /&gt;#define MSG_SIZE 65519&lt;BR /&gt;&lt;BR /&gt;int main() {&lt;BR /&gt;&lt;BR /&gt;  int key=12345;&lt;BR /&gt;&lt;BR /&gt;  int msgid;&lt;BR /&gt;&lt;BR /&gt;  int iret;&lt;BR /&gt;&lt;BR /&gt;  long msgtyp=1;&lt;BR /&gt;&lt;BR /&gt;  struct msgbuf {&lt;BR /&gt;&lt;BR /&gt;    long mtype;&lt;BR /&gt;&lt;BR /&gt;    char mtext;  /* message data */&lt;BR /&gt;&lt;BR /&gt;  }buff;&lt;BR /&gt;&lt;BR /&gt;  msgid=msgget(key, IPC_CREAT|0666);&lt;BR /&gt;&lt;BR /&gt;  iret=msgrcv(msgid, &amp;amp;buff, &lt;BR /&gt;&lt;BR /&gt;              MSG_SIZE, msgtyp, 0);&lt;BR /&gt;&lt;BR /&gt;  if (iret&amp;lt;0) {&lt;BR /&gt;&lt;BR /&gt;    perror("msgrcv");&lt;BR /&gt;&lt;BR /&gt;  }&lt;BR /&gt;&lt;BR /&gt;  return 0;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/ERRNO.H&gt;&lt;/SYS&gt;&lt;/SYS&gt;&lt;/STDIO.H&gt;</description>
      <pubDate>Wed, 09 May 2007 03:04:17 GMT</pubDate>
      <guid>https://community.hpe.com/t5/linux/msgrcv%E3%81%AB%E6%B8%A1%E3%81%99%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%B5%E3%82%A4%E3%82%BA/m-p/1181164#M171</guid>
      <dc:creator>ハット</dc:creator>
      <dc:date>2007-05-09T03:04:17Z</dc:date>
    </item>
  </channel>
</rss>

