mq_send - ライブラリコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 返り値
- エラー
- 準拠
- 関連項目
名前
mq_send, mq_timedsend - メッセージキューにメッセージを送信する
書式
#include <mqueue.h>
mqd_t mq_send(mqd_t mqdes, const char *msg_ptr,
size_t msg_len, unsigned msg_prio);
#define _XOPEN_SOURCE 600#include <time.h>#include <mqueue.h>
mqd_t mq_timedsend(mqd_t mqdes, const char *msg_ptr,
size_t msg_len, unsigned msg_prio,
const struct timespec *abs_timeout);
説明
mq_send
()は、記述子
mqdes
で参照されるメッセージキューに
msg_ptr
が指すメッセージを追加する。
msg_len
引き数は、
msg_ptr
が指すメッセージの長さを示す。この長さはキューの
mq_msgsize
属性以下でなければならない。
長さが 0 のメッセージも認められている。
msg_prio
引き数は、メッセージの優先度を指定する負でない整数である。
メッセージは優先度の降順でキューに格納され、同じ優先度の新しいメッセージは
同じ優先度の古いメッセージの後ろに格納される。
メッセージキューがすでに一杯の場合
(すなわち、キューに入っているメッセージ数がキューの
mq_maxmsg
属性と等しい場合)、デフォルトでは、
mq_send ()
は、メッセージをキューイングするのに十分な空間ができるか、
関数呼び出しがシグナルハンドラにより中断されるまで、停止 (block) する。
メッセージキュー記述 (message queue description) で
O_NONBLOCK
フラグが有効になっている場合は、
mq_send
()はエラー
EAGAIN
ですぐに失敗する。
mq_timedsend
()は
mq_send
()と全く同じ動作をするが、
メッセージキューが一杯で、メッセージキュー記述で
O_NONBLOCK
フラグが有効になっていない場合に、この呼び出しが停止する時間の上限を
abs_timeout
が指す構造体で指定する点が異なる。この上限は、タイムアウトの時刻を
時刻紀元 (Epoch; 1970 年 1 月 1 日 00:00:00) からの経過時間
(秒とナノ秒の組) で指定する。タイムアウト時刻は以下の構造体で指定する:
struct timespec {
time_t tv_sec; /* 秒 */
long tv_nsec; /* ナノ秒 */
};
メッセージキューが一杯で、関数呼び出し時にすでにタイムアウト時刻が
過ぎている場合、
mq_timedsend
()はすぐに返る。
返り値
成功すると、
mq_send
()と
mq_timedsend
()は 0 を返す。
エラーの場合、-1 を返し、
errno
にエラーを示す値を設定する。
エラー
-
EAGAIN
-
キューが一杯で、かつ
mqdes
で参照されるメッセージキュー記述で
O_NONBLOCK
フラグがセットされていた。
-
EBADF
-
mqdes
で指定された記述子が不正である。
-
EMSGSIZE
-
msg_len
がメッセージキューの
mq_msgsize
属性よりも大きかった。
-
EINTR
-
関数呼び出しがシグナルハンドラにより中断された。
-
EINVAL
-
関数呼び出しは停止するはずであったが、
abs_timeout
が不正であった。
abs_timeout
が不正とは、
tv_sec
が 0 未満、もしくは
tv_nsec
が 0 未満か 1,000,000,000 より大きい、ということである。
-
ETIMEDOUT
-
メッセージが転送される前に関数呼び出しがタイムアウトした。
準拠
関連項目
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする