2017-12-07 6 views
-1

msgsnd関数のmtextパラメータで複数の変数を送信したいとします。私はそれがcharの配列でなければならないことを知っていますが、私が送るべきすべての変数は整数です。ありがとうございました! mtextとしてmsgsnd関数で倍数変数を送信

+0

ようこそスタックオーバーフロー!あなたの質問を編集して[これまでに行ったコード](http://whathaveyoutried.com)を表示してください。問題を抱えているコードのアウトライン(ただし、好ましくは[mcve])を含める必要があります。次に、特定の問題を解決することができます。 [ask]も読んでください。 –

答えて

0

は文字の配列である、それは文字などの要素を持っている必要がありますが、あなたがそれに整数を格納したい場合は、sprintf()またはユーザーmtext

OR

に保存し、その後機能&を定義を使用して stringintegersを変換することができます

あなたは一時的な解決のためのあなたの要件に応じて事前定義された構造(msgbuf)を変更することができますが、私はあなたが送信し、受信しているすべてのプロセスで同じ構造でなければならないので、

  struct msgbuf { 
       long mtype;  /* message type, must be > 0 */ 
       char mtext[1]; /* message data */ 
      }; 

上記の構造に余分なメンバーを追加できます。この構造だけで整数を送ることは義務ですか?整数を1つの配列&に格納してから、msgsnd()の第2引数としてmsgsnd()がバッファ&を呼び出すと、その配列を第2引数として渡すことができます。

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); 

私はそれが役に立ちそうです。