OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / release / man3 / sigvec.3
1 .\" t
2 .\" Copyright (c) 2005 by Michael Kerrisk <mtk.manpages@gmail.com>
3 .\"
4 .\" %%%LICENSE_START(VERBATIM)
5 .\" Permission is granted to make and distribute verbatim copies of this
6 .\" manual provided the copyright notice and this permission notice are
7 .\" preserved on all copies.
8 .\"
9 .\" Permission is granted to copy and distribute modified versions of this
10 .\" manual under the conditions for verbatim copying, provided that the
11 .\" entire resulting derived work is distributed under the terms of a
12 .\" permission notice identical to this one.
13 .\"
14 .\" Since the Linux kernel and libraries are constantly changing, this
15 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
16 .\" responsibility for errors or omissions, or for damages resulting from
17 .\" the use of the information contained herein.  The author(s) may not
18 .\" have taken the same level of care in the production of this manual,
19 .\" which is licensed free of charge, as they might when working
20 .\" professionally.
21 .\"
22 .\" Formatted or processed versions of this manual, if unaccompanied by
23 .\" the source, must acknowledge the copyright and authors of this work.
24 .\" %%%LICENSE_END
25 .\"
26 .\"*******************************************************************
27 .\"
28 .\" This file was generated with po4a. Translate the source file.
29 .\"
30 .\"*******************************************************************
31 .\"
32 .\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved.
33 .\" Translated 2005-12-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
34 .\"
35 .TH SIGVEC 3 2014\-12\-31 Linux "Linux Programmer's Manual"
36 .SH 名前
37 sigvec, sigblock, sigsetmask, siggetmask, sigmask \- BSD 版シグナル API
38 .SH 書式
39 \fB#include <signal.h>\fP
40 .sp
41 \fBint sigvec(int \fP\fIsig\fP\fB, const struct sigvec *\fP\fIvec\fP\fB, struct sigvec
42 *\fP\fIovec\fP\fB);\fP
43 .sp
44 \fBint sigmask(int \fP\fIsignum\fP\fB);\fP
45 .sp
46 \fBint sigblock(int \fP\fImask\fP\fB);\fP
47 .sp
48 \fBint sigsetmask(int \fP\fImask\fP\fB);\fP
49 .sp
50 \fBint siggetmask(void);\fP
51 .sp
52 .in -4n
53 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
54 .in
55 .sp
56 上記の全ての関数: _BSD_SOURCE
57 .SH 説明
58 これらの関数は、昔ながらの BSD 版シグナル API を使用しているプログラム に対して互換性のあるインターフェースを glibc
59 で提供するものである。 この API は過去のものであり、新しいアプリケーションでは POSIX シグナル API (\fBsigaction\fP(2),
60 \fBsigprocmask\fP(2)  など) を使用すべきである。
61
62 関数 \fBsigvec\fP()  は、(POSIX の \fBsigaction\fP(2)  と同様に) シグナル \fIsig\fP の動作の設定・取得を行う。
63 \fIvec\fP は、NULL 以外の場合、 \fIsig\fP の新しい動作を定義した \fIsigvec\fP 構造体へのポインターである。 \fIovec\fP
64 は、NULL 以外の場合、 \fIsig\fP の変更前の動作を返すために使用される \fIsigvec\fP 構造体へのポインターである。 \fIsig\fP
65 の動作を変更せずに現在の動作を取得するためには、 \fIvec\fP に NULL を指定し、 \fIovec\fP に NULL
66 でないポインターを指定すればよい。
67
68 シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP に対する動作は変更できない。
69
70 \fIsigvec\fP 構造体は以下の通りである:
71 .in +4n
72 .nf
73
74 struct sigvec {
75     void (*sv_handler)(int); /* Signal disposition */
76     int    sv_mask;          /* Signals to be blocked in handler */
77     int    sv_flags;         /* Flags */
78 };
79
80 .fi
81 .in
82 \fIsv_handler\fP フィールドはシグナルの動作を指定するもので、 シグナルハンドラー関数のアドレスか、 \fBSIG_DFL\fP と
83 \fBSIG_IGN\fP のいずれかを指定できる。 \fBSIG_DFL\fP はシグナルに適用されるデフォルトの動作を意味し、 \fBSIG_IGN\fP
84 はシグナルを無視することを意味する。
85
86 \fIsv_handler\fP にシグナルハンドラーのアドレスを指定した場合、 \fIsv_mask\fP
87 はハンドラーが実行中にブロックされるべきシグナルのマスクを指定する。 また、ハンドラーを起動したシグナル自身はブロックされる。 \fBSIGKILL\fP か
88 \fBSIGSTOP\fP をブロックしようとした場合には、黙って無視される。
89
90 \fIsv_handler\fP にシグナルハンドラーのアドレスを指定した場合、 \fIsv_flags\fP
91 フィールドはハンドラーが呼ばれた際の挙動を制御するフラグを指定する。 このフィールドには、0 か、以下のフラグを 1個以上指定できる:
92 .TP 
93 \fBSV_INTERRUPT\fP
94 シグナルハンドラーが停止中のシステムコールを中断した場合、 ハンドラーから復帰しても、システムコールは再開されず、 エラー \fBEINTR\fP
95 で失敗する。 このフラグを指定しなかった場合、システムコールは デフォルトで再開される。
96 .TP 
97 \fBSV_RESETHAND\fP
98 シグナルハンドラーを呼び出す前にシグナルの動作を デフォルトにリセットする。 このフラグを指定しなかった場合、もう一度 \fBsigvec\fP()
99 を呼び出して明示的に削除されるか、プロセスが \fBexecve\fP(2)  を実行するまで、ハンドラーは設定されたままとなる。
100 .TP 
101 \fBSV_ONSTACK\fP
102 代替シグナルスタック上でシグナルハンドラーを実行する (歴史的に、BSD では代替シグナルスタックは廃止された関数 \fBsigstack\fP()
103 を使って設定する。POSIX では、代わりに \fBsigaltstack\fP(2)  を使用する)。
104 .PP
105 マクロ \fBsigmask\fP()  は \fIsignum\fP に対する「シグナルマスク」を構成して返す。 例えば、以下のようなコードを使うと、
106 \fBsigvec\fP()  に渡す \fIvec.sv_mask\fP を初期化できる。
107 .nf
108
109     vec.sv_mask = sigmask(SIGQUIT) | sigmask(SIGABRT);
110                 /* Block SIGQUIT and SIGABRT during
111                    handler execution */
112 .fi
113 .PP
114 \fBsigblock\fP()  関数は、 \fImask\fP にあるシグナルをプロセスのシグナルマスクに追加し (POSIX の
115 \fIsigprocmask(SIG_BLOCK)\fP と同様)、変更前のプロセスのシグナルマスクを返す。 \fBSIGKILL\fP や \fBSIGSTOP\fP
116 をブロックしようとした場合には、黙って無視される。
117 .PP
118 \fBsigsetmask\fP()  関数はプロセスのシグナルマスクを \fImask\fP で指定された値に設定し (POSIX の
119 \fIsigprocmask(SIG_SETMASK)\fP と同様)、変更前のプロセスのシグナルマスクを返す。
120 .PP
121 \fBsiggetmask\fP()  関数はプロセスの現在のシグナルマスクを返す。この関数は \fIsigblock(0)\fP と等価である。
122 .SH 返り値
123 \fBsigvec\fP()  関数は成功すると 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値をセットする。
124
125 \fBsigblock\fP()  と \fBsigsetmask\fP()  は変更前のシグナルマスクを返す。
126
127 \fBsigmask\fP() マクロは \fIsignum\fP のシグナルマスクを返す。
128 .SH エラー
129 \fBsigaction\fP(2)  と \fBsigprocmask\fP(2)  の「エラー」の節を参照。
130 .SH 属性
131 .SS "マルチスレッディング (pthreads(7) 参照)"
132 関数 \fBsigvec\fP(), \fBsigblock\fP(), \fBsigsetmask\fP(), \fBsiggetmask\fP() はスレッドセーフである。
133 .LP
134 \fBsigmask\fP() マクロはスレッドセーフである。
135 .SH バージョン
136 バージョン 2.21 以降では、 GNU C ライブラリはもはや \fBsigvec\fP() 関数を ABI の一部として公開しなくなった。
137 (後方互換性を保証するために、glibc のシンボルのバージョン付け機構により、
138 古いバージョンのライブラリとリンクされたバイナリに対してはこのインターフェースが引き続き公開されている。)
139 .SH 準拠
140 これらの関数のうち \fBsiggetmask\fP()  以外の全ては 4.3BSD にあった。 \fBsiggetmask\fP()  の出自ははっきりしない。
141 これらの関数は廃止予定であり、新しいプログラムでは使用しないこと。
142 .SH 注意
143 4.3BSD では、信頼性のあるシグナル処理機構を提供する (\fIvec.sv_mask\fP を 0 で \fBsigvec\fP()
144 を呼び出したときと同様)。 System V が提供する処理機構は信頼性のないものである。 POSIX.1\-2001 では、 \fBsignal\fP()
145 のこの点は規定しないままとなっている。 さらなる詳細については \fBsignal\fP(2)  を参照。
146
147 BSD と System V のどちらのシステムでも シグナルを待つために、 \fBsigpause\fP(3)  という名前の関数が提供されているが、
148 この関数の引き数は両方のシステムで異なる。 詳細は \fBsigpause\fP(3)  を参照。
149 .SH 関連項目
150 \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsigprocmask\fP(2),
151 \fBraise\fP(3), \fBsigpause\fP(3), \fBsigset\fP(3), \fBsignal\fP(7)
152 .SH この文書について
153 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。
154 プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。