OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man2 / sigwaitinfo.2
index 567ac97..0aa896b 100644 (file)
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2003 Yuichi SATO
-.\"         all rights reserved.
-.\" Translated 2003-02-16, Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated 2006-07-21, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
-.\" Updated 2008-08-07, Akihiro MOTOKI, LDP v3.05
+.\"*******************************************************************
 .\"
-.\"WORD:       pending         ÂÔµ¡Ãæ¤Ç¤¢¤ë
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH SIGWAITINFO 2 2008-10-04 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-sigwaitinfo, sigtimedwait \- ¥­¥å¡¼¤ËÆþ¤ì¤é¤ì¤¿¥·¥°¥Ê¥ë¤òƱ´ü¤·¤ÆÂÔ¤Ä
-.SH ½ñ¼°
+.\"*******************************************************************
+.TH SIGWAITINFO 2 2011\-10\-03 Linux "Linux Programmer's Manual"
+.SH 名前
+sigwaitinfo, sigtimedwait \- キューに入れられたシグナルを同期して待つ
+.SH 書式
 .nf
-.B #include <signal.h>
+\fB#include <signal.h>\fP
 .sp
-.BI "int sigwaitinfo(const sigset_t *" set ", siginfo_t *" info ");"
+\fBint sigwaitinfo(const sigset_t *\fP\fIset\fP\fB, siginfo_t *\fP\fIinfo\fP\fB);\fP
 .sp
-.BI "int sigtimedwait(const sigset_t *" set ", siginfo_t *" info ", "
-.BI "                 const struct timespec *" timeout ");"
+\fBint sigtimedwait(const sigset_t *\fP\fIset\fP\fB, siginfo_t *\fP\fIinfo\fP\fB, \fP
+\fB                 const struct timespec *\fP\fItimeout\fP\fB);\fP
 .fi
 .sp
 .in -4n
-glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
-.RB ( feature_test_macros (7)
-»²¾È):
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
 .in
 .sp
-.BR sigwaitinfo (),
-.BR sigtimedwait ():
-_POSIX_C_SOURCE\ >=\ 199309L
-.SH ÀâÌÀ
-.BR sigwaitinfo ()
-¤Ï
-.I set
-¤Î¤¦¤Á¤Î¤É¤ì¤«¤Î¥·¥°¥Ê¥ë¤¬ÇÛÁ÷¤µ¤ì¤ë¤Þ¤Ç¡¢
-¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤Î¼Â¹Ô¤ò°ì»þÄä»ß¤¹¤ë
-(¸Æ¤Ó½Ð¤·¥¹¥ì¥Ã¥É¤ËÂФ·¤Æ
-.I set
-¤Î¤¦¤Á¤Î¤É¤ì¤«¤Î¥·¥°¥Ê¥ë¤¬´û¤ËÂÔµ¡Ãæ (pending) ¤Ç¤¢¤ë¾ì¹ç¡¢
-.BR sigwaitinfo ()
-¤Ï¤½¤Î¥·¥°¥Ê¥ë¤Î¾ðÊó¤òÊÖ¤·¤Æ¤¹¤°¤ËÌá¤ë)¡£
-.PP
-.BR sigwaitinfo ()
-¤ÏÇÛÁ÷¤µ¤ì¤¿¥·¥°¥Ê¥ë¤òÂÔµ¡Ãæ¤Î¥·¥°¥Ê¥ë¤Î½¸¹ç¤«¤éºï½ü¤·¡¢
-´Ø¿ô¤Î·ë²Ì¤È¤·¤Æ¥·¥°¥Ê¥ëÈÖ¹æ¤òÊÖ¤¹¡£
-.I info
-°ú¤­¿ô¤¬ NULL ¤Ç¤Ê¤¤¾ì¹ç¡¢ÇÛÁ÷¤µ¤ì¤¿¥·¥°¥Ê¥ë¤Î¾ðÊó¤¬Æþ¤Ã¤¿
-.I siginfo_t
-·¿
-.RB ( sigaction (2)
-¤ò»²¾È) ¤Î¹½Â¤ÂΤòÊÖ¤¹¡£
+\fBsigwaitinfo\fP(), \fBsigtimedwait\fP(): _POSIX_C_SOURCE\ >=\ 199309L
+.SH 説明
+\fBsigwaitinfo\fP()  は \fIset\fP のうちのどれかのシグナルが配送されるまで、 呼び出しスレッドの実行を一時停止する
+(呼び出しスレッドに対して \fIset\fP のうちのどれかのシグナルが既に待機中 (pending) である場合、 \fBsigwaitinfo\fP()
+はそのシグナルの情報を返してすぐに戻る)。
+
+\fBsigwaitinfo\fP()  は配送されたシグナルを待機中のシグナルの集合から削除し、 関数の結果としてシグナル番号を返す。 \fIinfo\fP
+引き数が NULL でない場合、配送されたシグナルの情報が入った \fIsiginfo_t\fP 型 (\fBsigaction\fP(2)  を参照)
+の構造体を返す。
 .PP
-.BR sigwaitinfo ()
-¤ÇÊÖ¤µ¤ì¤ë¥·¥°¥Ê¥ë¤Ï¡¢Ä̾ï¤Î½çÈÖ¤ÇÇÛÁ÷¤µ¤ì¤ë¡£
-¾ÜºÙ¤Ï
-.BR signal (7)
-¤ò»²¾È¤¹¤ë¤³¤È¡£
+\fBsigwaitinfo\fP()  で返されるシグナルは、通常の順番で配送される。 詳細は \fBsignal\fP(7)  を参照すること。
 .PP
-.BR sigtimedwait ()
-¤Ï¡¢
-.BR sigwaitinfo ()
-¤È¼¡¤ÎÅÀ¤ò½ü¤¤¤ÆÁ´¤¯Æ±¤¸¤è¤¦¤ËÆ°ºî¤¹¤ë¡£
-¤³¤Î´Ø¿ô¤Ë¤Ï¤â¤¦ 1 ¤Ä¤Î°ú¤­¿ô
-.I timeout
-¤¬¤¢¤ê¡¢¥¹¥ì¥Ã¥É¤¬°ì»þÄä»ß¤¹¤ë»þ´Ö¤Î¾å¸Â¤òÄê¤á¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-¤³¤Î°ú¤­¿ô¤Î·¿¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¢¤ë:
+\fBsigtimedwait\fP()  は、 \fBsigwaitinfo\fP()  と次の点を除いて全く同じように動作する。 この関数にはもう 1
+つの引き数 \fItimeout\fP があり、スレッドが一時停止する時間の上限を定めることができる。 この引き数の型は以下のとおりである:
 .sp
 .in +4n
 .nf
 struct timespec {
-    long    tv_sec;         /* Éà*/
-    long    tv_nsec;        /* ¥Ê¥ÎÉà*/
+    long    tv_sec;         /*  */
+    long    tv_nsec;        /* ナノ秒 */
 }
 .fi
 .in
 .sp
-¤³¤Î¹½Â¤ÂΤΠ2 ¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤¬¤È¤â¤Ë 0 ¤Î¾ì¹ç¡¢¥Ý¡¼¥ê¥ó¥°¤¬¹Ô¤ï¤ì¤ë:
-.BR sigtimedwait ()
-¤Ï¡¢¸Æ¤Ó½Ð¤·Â¦¥×¥í¥»¥¹¤ËÂФ·¤Æ
-ÂÔµ¡¤·¤Æ¤¤¤ë¥·¥°¥Ê¥ë¤Î¾ðÊó¤òÊÖ¤·¤ÆÌá¤ë¤«¡¢
-.I set
-¤Î¤¦¤Á¤Î¤É¤Î¥·¥°¥Ê¥ë¤âÂÔµ¡¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¥¨¥é¡¼¤òÊÖ¤·¤ÆÌá¤ë¡£
-.SH ÊÖ¤êÃÍ
-À®¸ù¤·¤¿¾ì¹ç¡¢
-.BR sigwaitinfo ()
-¤È
-.BR sigtimedwait ()
-¤Ï¥·¥°¥Ê¥ëÈÖ¹æ (¤¹¤Ê¤ï¤Á 0 ¤è¤êÂ礭¤¤¿ô) ¤òÊÖ¤¹¡£
-¼ºÇÔ¤·¤¿¾ì¹ç¡¢2 ¤Ä¤Î´Ø¿ô¤Ï \-1 ¤òÊÖ¤·¡¢
-.I errno
-¤Ï¥¨¥é¡¼¤òɽ¤¹ÃͤËÀßÄꤵ¤ì¤ë¡£
-.SH ¥¨¥é¡¼
-.TP
-.B EAGAIN
-.I set
-¤Î¤¦¤Á¤Î¤É¤Î¥·¥°¥Ê¥ë¤â
-.BR sigtimedwait ()
-¤Ë»ØÄꤵ¤ì¤¿
-.I timeout
-¤Î´ü´ÖÆâ¤ËÇÛÁ÷¤µ¤ì¤Ê¤«¤Ã¤¿¡£
-.TP
-.B EINTR
-¥·¥°¥Ê¥ëÂÔ¤Á¤¬¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ë¤è¤Ã¤ÆÃæÃÇ (interrupt) ¤µ¤ì¤¿
-(¤³¤Î¥Ï¥ó¥É¥é¤Ï
-.I set
-¤Ë¤¢¤ë¥·¥°¥Ê¥ë°Ê³°¤Î¤â¤Î¤Ç¤¢¤ë)¡£
-.BR signal (7)
-»²¾È¡£
-.TP
-.B EINVAL
-.I timeout
-¤¬ÉÔÀµ¤Ç¤¢¤ë¡£
-.SH ½àµò
-POSIX.1-2001.
-.SH Ãí°Õ
-Ä̾ï¤Î»ÈÍÑË¡¤Ç¤Ï¡¢¸Æ¤Ó½Ð¤·Â¦¥×¥í¥»¥¹¤Ï¤³¤ì¤é¤Î´Ø¿ô¤è¤êÀè¤Ë
-.BR sigprocmask (2)
-¤Î¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤ê
-.I set
-¤Ë´Þ¤Þ¤ì¤ë¥·¥°¥Ê¥ë¤ò¥Ö¥í¥Ã¥¯¤·
-(¤½¤Î¤¿¤á¤Ë¤³¤ì¤é¤Î¥·¥°¥Ê¥ë¤¬¤³¤Î¸å¤Ë³¤¯
-.BR sigwaitinfo ()
-¤ä
-.BR sigtimedwait ()
-¤Î¸Æ¤Ó½Ð¤·¤Î´Ö¤ËÇÛÁ÷¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢
-¥Ç¥Õ¥©¥ë¥È¤ÎÇÛÃ֤ϹԤï¤ì¤º)¡¢
-¤³¤ì¤é¤Î¥·¥°¥Ê¥ë¤ËÂФ¹¤ë¥Ï¥ó¥É¥é¤ÏÀßÄꤷ¤Ê¤¤¡£
-¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¥×¥í¥°¥é¥à¤Ç¤Ï¡¢
-.BR sigwaitinfo ()
-¤ä
-.BR sigtimedwait ()
-¤ò¸Æ¤Ó½Ð¤·¤¿¥¹¥ì¥Ã¥É°Ê³°¤Î¥¹¥ì¥Ã¥É¤Ë¤½¤Î¥·¥°¥Ê¥ë¤¬ÇÛÁ÷¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¡¢
-Á´¤Æ¤Î¥¹¥ì¥Ã¥É¤Ç³ºÅö¥·¥°¥Ê¥ë¤ò¥Ö¥í¥Ã¥¯¤¹¤Ù¤­¤Ç¤¢¤ë¡£
+この構造体の 2 つのフィールドがともに 0 の場合、ポーリングが行われる: \fBsigtimedwait\fP()  は、呼び出し側プロセスに対して
+待機しているシグナルの情報を返して戻るか、 \fIset\fP のうちのどのシグナルも待機していない場合はエラーを返して戻る。
+.SH 返り値
+成功した場合、 \fBsigwaitinfo\fP()  と \fBsigtimedwait\fP()  はシグナル番号 (すなわち 0 より大きい数) を返す。
+失敗した場合、2 つの関数は \-1 を返し、 \fIerrno\fP はエラーを表す値に設定される。
+.SH エラー
+.TP 
+\fBEAGAIN\fP
+\fIset\fP のうちのどのシグナルも \fBsigtimedwait\fP()  に指定された \fItimeout\fP の期間内に配送されなかった。
+.TP 
+\fBEINTR\fP
+シグナル待ちがシグナルハンドラによって中断 (interrupt) された (このハンドラは \fIset\fP にあるシグナル以外のものである)。
+\fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+\fItimeout\fP が不正である。
+.SH 準拠
+POSIX.1\-2001.
+.SH 注意
+通常の使用法では、呼び出し側プロセスはこれらの関数より先に \fBsigprocmask\fP(2)  の呼び出すことにより \fIset\fP
+に含まれるシグナルをブロックし (そのためにこれらのシグナルがこの後に続く \fBsigwaitinfo\fP()  や \fBsigtimedwait\fP()
+の呼び出しの間に配送された場合には、 デフォルトの配置は行われず)、 これらのシグナルに対するハンドラは設定しない。 マルチスレッドプログラムでは、
+\fBsigwaitinfo\fP()  や \fBsigtimedwait\fP()  を呼び出したスレッド以外のスレッドにそのシグナルが配送されないように、
+全てのスレッドで該当シグナルをブロックすべきである。
+
+指定されたスレッドに対する処理待ちのシグナルの集合は、 そのスレッド自体宛ての処理待ちのシグナル集合と、プロセス全体宛ての
+処理待ちのシグナル集合をあわせたものである (\fBsignal\fP(7)  参照)。
 
-»ØÄꤵ¤ì¤¿¥¹¥ì¥Ã¥É¤ËÂФ¹¤ë½èÍýÂÔ¤Á¤Î¥·¥°¥Ê¥ë¤Î½¸¹ç¤Ï¡¢
-¤½¤Î¥¹¥ì¥Ã¥É¼«Âΰ¸¤Æ¤Î½èÍýÂÔ¤Á¤Î¥·¥°¥Ê¥ë½¸¹ç¤È¡¢¥×¥í¥»¥¹Á´Âΰ¸¤Æ¤Î
-½èÍýÂÔ¤Á¤Î¥·¥°¥Ê¥ë½¸¹ç¤ò¤¢¤ï¤»¤¿¤â¤Î¤Ç¤¢¤ë
-.RB ( signal (7)
-»²¾È)¡£
+\fBSIGKILL\fP と \fBSIGSTOP\fP を待とうとした場合、黙って無視される。
 
-°ì¤Ä¤Î¥×¥í¥»¥¹Æâ¤ÎÊ£¿ô¤Î¥¹¥ì¥Ã¥É¤¬
-.BR sigwaitinfo ()
-¤ä
-.BR sigtimedwait ()
-¤ÇƱ¤¸¥·¥°¥Ê¥ë¤òÂԤäÆÄä»ß¤·¤¿¾ì¹ç¡¢
-¥×¥í¥»¥¹Á´Âΰ¸¤Æ¤Î¥·¥°¥Ê¥ë¤¬ÇÛÁ÷¤µ¤ì¤ë¤È¡¢Ê£¿ô¤Î¥¹¥ì¥Ã¥É¤Î¤¦¤Á°ì¤Ä¤À¤±¤¬
-¼ÂºÝ¤Ë¤½¤Î¥·¥°¥Ê¥ë¤ò¼õ¿®¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£
-¤É¤Î¥¹¥ì¥Ã¥É¤¬¥·¥°¥Ê¥ë¤ò¼õ¿®¤¹¤ë¤«¤Ï·è¤Þ¤Ã¤Æ¤¤¤Ê¤¤¡£
+一つのプロセス内の複数のスレッドが \fBsigwaitinfo\fP()  や \fBsigtimedwait\fP()  で同じシグナルを待って停止した場合、
+プロセス全体宛てのシグナルが配送されると、複数のスレッドのうち一つだけが 実際にそのシグナルを受信することになる。
+どのスレッドがシグナルを受信するかは決まっていない。
 
-POSIX ¤Ç¤Ï
-.BR sigtimedwait ()
-¤Î°ú¤­¿ô
-.I timeout
-¤ÎÃͤò NULL ¤Ë¤·¤¿¾ì¹ç¤Î°ÕÌ£¤ò̤ÄêµÁ¤È¤·¤Æ¤¤¤ë¡£
-.BR sigwaitinfo ()
-¤ò¸Æ¤Ó½Ð¤·¤¿¤Î¤ÈƱ¤¸°ÕÌ£¤È¤·¤Æ¤â¤è¤¤¤³¤È¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢
-¼ÂºÝ Linux ¤Ç¤Ï¤³¤Î¤è¤¦¤ËÆ°ºî¤¹¤ë¡£
+POSIX では \fBsigtimedwait\fP()  の引き数 \fItimeout\fP の値を NULL にした場合の意味を未定義としている。
+\fBsigwaitinfo\fP()  を呼び出したのと同じ意味としてもよいことになっており、 実際 Linux ではこのように動作する。
 
-Linux ¤Ç¤Ï¡¢
-.BR sigwaitinfo ()
-¤Ï
-.BR sigtimedwait ()
-¤òÍѤ¤¤Æ¼ÂÁõ¤µ¤ì¤¿¥é¥¤¥Ö¥é¥ê´Ø¿ô¤Ç¤¢¤ë¡£
-.SH ´ØÏ¢¹àÌÜ
-.BR kill (2),
-.BR sigaction (2),
-.BR signal (2),
-.BR signalfd (2),
-.BR sigpending (2),
-.BR sigprocmask (2),
-.BR sigqueue (2),
-.BR sigsetops (3),
-.BR sigwait (3),
-.BR signal (7),
-.BR time (7)
+Linux では、 \fBsigwaitinfo\fP()  は \fBsigtimedwait\fP()  を用いて実装されたライブラリ関数である。
+.SH 関連項目
+\fBkill\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2),
+\fBsigprocmask\fP(2), \fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigwait\fP(3),
+\fBsignal\fP(7), \fBtime\fP(7)