.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH MQ_NOTIFY 3 2010\-10\-04 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
+.\" Translated 2006-07-31, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24
+.\" Updated 2010-10-27, Akihiro Motoki, LDP v3.29
+.\"
+.TH MQ_NOTIFY 3 2014\-04\-06 Linux "Linux Programmer's Manual"
.SH 名前
mq_notify \- メッセージ到着時に通知を行うよう登録する
.SH 書式
.sp
\fI\-lrt\fP でリンクする。
.SH 説明
-\fBmq_notify\fP() を使うと、ディスクリプタ \fImqdes\fP で参照される空のメッセージキューに新しくメッセージが到着した時に
+\fBmq_notify\fP() を使うと、ディスクリプター \fImqdes\fP で参照される空のメッセージキューに新しくメッセージが到着した時に
非同期の通知 (notification) の配送が行われるように登録したり、 その解除を行ったりできる。
-\fIsevp\fP 引き数は \fIsigevent\fP 構造体へのポインタである。 この構造体の定義と一般的な詳細については \fBsigevent\fP(7)
+\fIsevp\fP å¼\95ã\81\8dæ\95°ã\81¯ \fIsigevent\fP æ§\8bé\80 ä½\93ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\80\82 ã\81\93ã\81®æ§\8bé\80 ä½\93ã\81®å®\9a義ã\81¨ä¸\80è\88¬ç\9a\84ã\81ªè©³ç´°ã\81«ã\81¤ã\81\84ã\81¦ã\81¯ \fBsigevent\fP(7)
を参照。
.PP
-\fIsevp\fP ã\81\8c NULL ã\81§ã\81ªã\81\84ã\83\9dã\82¤ã\83³ã\82¿ã\81§ã\81\82ã\82\8cã\81°ã\80\81 \fBmq_notify\fP() ã\81¯ã\83¡ã\83\83ã\82»ã\83¼ã\82¸é\80\9aç\9f¥ã\82\92å\8f\97ã\81\91å\8f\96ã\82\8bã\82\88ã\81\86ã\81«å\91¼ã\81³å\87ºã\81\97å\85\83ã\81®ã\83\97ã\83ã\82»ã\82¹ã\82\92ç\99»é\8c²ã\81\99ã\82\8bã\80\82
-\fIsevp\fP が指す \fIsigevent\fP 構造体の \fIsigev_notify\fP フィールドは、どのような通知を行うのかを指定する。
-このフィールドは以下の値のいずれかを持つ。
+\fIsevp\fP ã\81\8c NULL ã\81§ã\81ªã\81\84ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8cã\81°ã\80\81 \fBmq_notify\fP()
+はメッセージ通知を受け取るように呼び出し元のプロセスを登録する。 \fIsevp\fP が指す \fIsigevent\fP 構造体の
+\fIsigev_notify\fP フィールドは、どのような通知を行うのかを指定する。 このフィールドは以下の値のいずれかを持つ。
.TP
\fBSIGEV_NONE\fP
.\" When is SIGEV_NONE useful?
.\" si_pid and si_uid -- MTK
\fIsigev_signo\fP で指定されたシグナルを送って、プロセスに通知する。 一般的な詳細については \fBsigevent\fP(7) を参照。
\fIsiginfo_t\fP 構造体の \fIsi_code\fP フィールドには \fBSI_MESGQ\fP が設定される。 さらに、 \fIsi_pid\fP
-にはメッセージを送信したプロセスの PID が、 \fIsi_uid\fP には送信プロセスの実ユーザ ID が設定される。
+にはメッセージを送信したプロセスの PID が、 \fIsi_uid\fP には送信プロセスの実ユーザー ID が設定される。
.TP
\fBSIGEV_THREAD\fP
メッセージの配送時には、 \fIsigev_notify_function\fP があたかも新しいスレッドの開始関数であるかのように起動される。 詳細は
.SH エラー
.TP
\fBEBADF\fP
-\fImqdes\fP に指定されたディスクリプタが不正である。
+\fImqdes\fP ã\81«æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cä¸\8dæ£ã\81§ã\81\82ã\82\8bã\80\82
.TP
\fBEBUSY\fP
別のプロセスがすでに このメッセージキューに対する通知を受信するように登録している。
\fBSIGEV_SIGNAL\fP だが \fIsevp\->sigev_signo\fP が有効なシグナル番号ではない。
.TP
\fBENOMEM\fP
-十分なメモリがない。
+å\8d\81å\88\86ã\81ªã\83¡ã\83¢ã\83ªã\83¼ã\81\8cã\81ªã\81\84ã\80\82
.PP
.\" Linux does not do this
POSIX.1\-2008 では、 \fIsevp\fP が NULL で、呼び出し元のプロセスがキュー \fImqdes\fP
.SH 例
以下のプログラムは、 コマンドライン引き数で指定された名前のメッセージキューへの 通知要求を登録し、通知はスレッドの作成によって行われる。
そのスレッドは、そのキューからメッセージを一つ読み出してから、 プロセスを終了する関数を実行する。
+.SS プログラムのソース
.nf
-
#include <pthread.h>
#include <mqueue.h>
#include <stdio.h>
mqd_t mqdes = *((mqd_t *) sv.sival_ptr);
/* 最大メッセージサイズを決定し、
- メッセージ受信用のバッファを確保する */
+ ã\83¡ã\83\83ã\82»ã\83¼ã\82¸å\8f\97ä¿¡ç\94¨ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92確ä¿\9dã\81\99ã\82\8b */
if (mq_getattr(mqdes, &attr) == \-1)
handle_error("mq_getattr");
if (nr == \-1)
handle_error("mq_receive");
- printf("Read %ld bytes from MQ\en", (long) nr);
+ printf("Read %zd bytes from MQ\en", nr);
free(buf);
exit(EXIT_SUCCESS); /* プロセスを終了する */
}
struct sigevent sev;
if (argc != 2) {
- fprintf(stderr, "Usage: %s <mq\-name>\en", argv[0]);
- exit(EXIT_FAILURE);
+ fprintf(stderr, "Usage: %s <mq\-name>\en", argv[0]);
+ exit(EXIT_FAILURE);
}
mqdes = mq_open(argv[1], O_RDONLY);
\fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_open\fP(3), \fBmq_receive\fP(3),
\fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBmq_overview\fP(7), \fBsigevent\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。