Man page - mq_timedsend(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

MQ_SEND

名 前
書 式
説 明
返 り 値
エ ラ ー
属 性
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

mq_send, mq_timedsend - メ ッ セ ー ジ キ ュ ー に メ ッ セ ー ジ を 送 信 す る

書 式

#include <mqueue.h>

int mq_send(mqd_t mqdes , const char * msg_ptr ,
size_t
msg_len , unsigned int msg_prio );

#include <time.h>
#include <mqueue.h>

int mq_timedsend(mqd_t mqdes , const char * msg_ptr ,
size_t
msg_len , unsigned int msg_prio ,
const struct timespec *
abs_timeout );

-lrt で リ ン ク す る 。

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

mq_timedsend ():

_POSIX_C_SOURCE >= 200112L

説 明

mq_send () は 、 メ ッ セ ー ジ キ ュ ー 記 述 子 mqdes で 参 照 さ れ る メ ッ セ ー ジ キ ュ ー に msg_ptr が 指 す メ ッ セ ー ジ を 追 加 す る 。 msg_len 引 数 は 、 msg_ptr が 指 す メ ッ セ ー ジ の 長 さ を 示 す 。 こ の 長 さ は キ ュ ー の mq_msgsize 属 性 以 下 で な け れ ば な ら な い 。 長 さ が 0 の メ ッ セ ー ジ も 認 め ら れ て い る 。

msg_prio 引 数 は 、 メ ッ セ ー ジ の 優 先 度 を 指 定 す る 負 で な い 整 数 で あ る 。 メ ッ セ ー ジ は 優 先 度 の 降 順 で キ ュ ー に 格 納 さ れ 、 同 じ 優 先 度 の 新 し い メ ッ セ ー ジ は 同 じ 優 先 度 の 古 い メ ッ セ ー ジ の 後 ろ に 格 納 さ れ る 。 メ ッ セ ー ジ の 優 先 度 の 範 囲 に つ い て は mq_overview (7) を 参 照 。

メ ッ セ ー ジ キ ュ ー が す で に 一 杯 の 場 合 (す な わ ち 、 キ ュ ー に 入 っ て い る メ ッ セ ー ジ 数 が キ ュ ー の mq_maxmsg 属 性 と 等 し い 場 合 )、 デ フ ォ ル ト で は 、 mq_send () は 、 メ ッ セ ー ジ を キ ュ ー イ ン グ す る の に 十 分 な 空 間 が で き る か 、 関 数 呼 び 出 し が シ グ ナ ル ハ ン ド ラ ー に よ り 中 断 さ れ る ま で 、 停 止 (block) す る 。 メ ッ セ ー ジ キ ュ ー 記 述 (message queue description) で O_NONBLOCK フ ラ グ が 有 効 に な っ て い る 場 合 は 、 mq_send () は エ ラ ー EAGAIN で す ぐ に 失 敗 す る 。

mq_timedsend () behaves just like mq_send (), except that if the queue is full and the O_NONBLOCK flag is not enabled for the message queue description, then abs_timeout points to a structure which specifies how long the call will block. This value is an absolute timeout in seconds and nanoseconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC), specified in the following structure:

struct timespec {
time_t tv_sec; /* 秒 */
long tv_nsec; /* ナ ノ 秒 */
};

メ ッ セ ー ジ キ ュ ー が 一 杯 で 、 関 数 呼 び 出 し 時 に す で に タ イ ム ア ウ ト 時 刻 が 過 ぎ て い る 場 合 、 mq_timedsend () は す ぐ に 返 る 。

返 り 値

成 功 す る と 、 mq_send () と mq_timedsend () は 0 を 返 す 。 エ ラ ー の 場 合 、 -1 を 返 し 、 errno に エ ラ ー を 示 す 値 を 設 定 す る 。

エ ラ ー

EAGAIN

キ ュ ー が 一 杯 で 、 か つ mqdes で 参 照 さ れ る メ ッ セ ー ジ キ ュ ー 記 述 で O_NONBLOCK フ ラ グ が セ ッ ト さ れ て い た 。

EBADF

The descriptor specified in mqdes was invalid or not opened for writing.

EINTR

関 数 呼 び 出 し が シ グ ナ ル ハ ン ド ラ ー に よ り 中 断 さ れ た 。 signal (7) 参 照 。

EINVAL

関 数 呼 び 出 し は 停 止 す る は ず で あ っ た が 、 abs_timeout が 不 正 で あ っ た 。 abs_timeout が 不 正 と は 、 tv_sec が 0 未 満 、 も し く は tv_nsec が 0 未 満 か 1,000,000,000 よ り 大 き い 、 と い う こ と で あ る 。

EMSGSIZE

msg_len が メ ッ セ ー ジ キ ュ ー の mq_msgsize 属 性 よ り も 大 き か っ た 。

ETIMEDOUT

メ ッ セ ー ジ が 転 送 さ れ る 前 に 関 数 呼 び 出 し が タ イ ム ア ウ ト し た 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-23235-1.png

準 拠

POSIX.1-2001, POSIX.1-2008.

注 意

Linux で は 、 mq_timedsend () は シ ス テ ム コ ー ル で あ る 。 mq_send () は ラ イ ブ ラ リ 関 数 で 、 mq_timedsend () シ ス テ ム コ ー ル を 用 い て 実 装 さ れ て い る 。

関 連 項 目

mq_close (3), mq_getattr (3), mq_notify (3), mq_open (3), mq_receive (3), mq_unlink (3), mq_overview (7), time (7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。