総合手引 | セクション 3 | オプション |
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
long mtype; /* メッセージタイプ */ char mtext[1]; /* メッセージ本体 */
mtype は 0 より大きい整数で、メッセージの選択に使用されます。 mtext はバイトの配列で、システム制限 ( MSGMAX) までのサイズです。
msgtyp の値には以下のような意味があります。
msgsz は、要求したメッセージの最大長を指定します。受信したメッセージが msgsz より長い場合、 msgflg で MSG_NOERROR フラグが設定されていると、メッセージはエラー通知なしで切り捨てられます。 MSG_NOERROR フラグが設定されていないと、エラーが戻されます。
msqid が指定するメッセージキューに、一致するメッセージが存在しない場合、 msgrcv() の動作は、 msgflg で IPC_NOWAIT フラグが設定されているかどうかによって決まります。 IPC_NOWAIT が設定されていると、 msgrcv() はすぐに -1 を戻し、 errno を EAGAIN に設定します。 IPC_NOWAIT が設定されていないと、呼び出しプロセスは、以下の状態になるまでブロック されます。
メッセージが問題なく受信されると、 msqid に関連するデータ構造体は、以下のように更新されます。
[EINVAL] | |
msqid
が正しいメッセージキュー ID でない場合。
要求されたタイプのメッセージが使用できるようになる状態を msgrcv() が待っている間にメッセージキューが削除された場合。 msgsz が 0 より小さい場合。 | |
[E2BIG] | |
一致するメッセージが受信されたが、サイズが msgsz より大きく、 msgflg で MSG_NOERROR フラグが設定されていない場合。 | |
[EACCES] | |
呼び出しプロセスに、メッセージキューの読込み権がない場合。 | |
[EFAULT] | |
msgp が、正しいアドレスを指していない場合。 | |
[EINTR] | |
システムコールが、シグナルの配送によって割り込まれた場合。 | |
[EAGAIN] | |
要求されたタイプのメッセージがメッセージキューになく、 msgflg で IPC_NOWAIT が設定されている場合。 | |
MSGRCV (3) | November 24, 1997 |
総合手引 | セクション 3 | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.