X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman3%2Fsigvec.3;h=fabdbe40bbcc9ce9c93c1fc14ce5bd7591e47852;hb=83f9e5d087c3464d5131604d3c9893479e6228eb;hp=ac54332eb2cf8fbfe4747a85ea67af6e1090ac96;hpb=05edc1c11c5b516ab7b254b23c5927d6bd36ce34;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man3/sigvec.3 b/release/man3/sigvec.3 index ac54332e..fabdbe40 100644 --- a/release/man3/sigvec.3 +++ b/release/man3/sigvec.3 @@ -1,6 +1,7 @@ .\" t .\" Copyright (c) 2005 by Michael Kerrisk .\" +.\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. @@ -20,19 +21,24 @@ .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. +.\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* -.TH SIGVEC 3 2007\-07\-26 Linux "Linux Programmer's Manual" +.\" +.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. +.\" Translated 2005-12-04, Akihiro MOTOKI +.\" +.TH SIGVEC 3 2014\-12\-31 Linux "Linux Programmer's Manual" .SH 名前 sigvec, sigblock, sigsetmask, siggetmask, sigmask \- BSD 版シグナル API .SH 書式 \fB#include \fP .sp -\fBint sigvec(int \fP\fIsig\fP\fB, struct sigvec *\fP\fIvec\fP\fB, struct sigvec +\fBint sigvec(int \fP\fIsig\fP\fB, const struct sigvec *\fP\fIvec\fP\fB, struct sigvec *\fP\fIovec\fP\fB);\fP .sp \fBint sigmask(int \fP\fIsignum\fP\fB);\fP @@ -49,14 +55,15 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .sp 上記の全ての関数: _BSD_SOURCE .SH 説明 -これらの関数は、昔ながらの BSD 版シグナル API を使用しているプログラム に対して互換性のあるインタフェースを glibc +これらの関数は、昔ながらの BSD 版シグナル API を使用しているプログラム に対して互換性のあるインターフェースを glibc で提供するものである。 この API は過去のものであり、新しいアプリケーションでは POSIX シグナル API (\fBsigaction\fP(2), \fBsigprocmask\fP(2) など) を使用すべきである。 関数 \fBsigvec\fP() は、(POSIX の \fBsigaction\fP(2) と同様に) シグナル \fIsig\fP の動作の設定・取得を行う。 -\fIvec\fP は、NULL 以外の場合、 \fIsig\fP の新しい動作を定義した \fIsigvec\fP 構造体へのポインタである。 \fIovec\fP -は、NULL 以外の場合、 \fIsig\fP の変更前の動作を返すために使用される \fIsigvec\fP 構造体へのポインタである。 \fIsig\fP -の動作を変更せずに現在の動作を取得するためには、 \fIvec\fP に NULL を指定し、 \fIovec\fP に NULL でないポインタを指定すればよい。 +\fIvec\fP は、NULL 以外の場合、 \fIsig\fP の新しい動作を定義した \fIsigvec\fP 構造体へのポインターである。 \fIovec\fP +は、NULL 以外の場合、 \fIsig\fP の変更前の動作を返すために使用される \fIsigvec\fP 構造体へのポインターである。 \fIsig\fP +の動作を変更せずに現在の動作を取得するためには、 \fIvec\fP に NULL を指定し、 \fIovec\fP に NULL +でないポインターを指定すればよい。 シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP に対する動作は変更できない。 @@ -65,41 +72,41 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参 .nf struct sigvec { - void (*sv_handler)(); /* Signal disposition */ - int sv_mask; /* Signals to be blocked in handler */ - int sv_flags; /* Flags */ + void (*sv_handler)(int); /* Signal disposition */ + int sv_mask; /* Signals to be blocked in handler */ + int sv_flags; /* Flags */ }; .fi .in -\fIsv_handler\fP フィールドはシグナルの動作を指定するもので、 シグナルハンドラ関数のアドレスか、 \fBSIG_DFL\fP と +\fIsv_handler\fP フィールドはシグナルの動作を指定するもので、 シグナルハンドラー関数のアドレスか、 \fBSIG_DFL\fP と \fBSIG_IGN\fP のいずれかを指定できる。 \fBSIG_DFL\fP はシグナルに適用されるデフォルトの動作を意味し、 \fBSIG_IGN\fP はシグナルを無視することを意味する。 -\fIsv_handler\fP にシグナルハンドラのアドレスを指定した場合、 \fIsv_mask\fP -はハンドラが実行中にブロックされるべきシグナルのマスクを指定する。 また、ハンドラを起動したシグナル自身はデフォルトでブロックされる。 -\fBSIGKILL\fP か \fBSIGSTOP\fP をブロックしようとした場合には、黙って無視される。 +\fIsv_handler\fP にシグナルハンドラーのアドレスを指定した場合、 \fIsv_mask\fP +はハンドラーが実行中にブロックされるべきシグナルのマスクを指定する。 また、ハンドラーを起動したシグナル自身はブロックされる。 \fBSIGKILL\fP か +\fBSIGSTOP\fP をブロックしようとした場合には、黙って無視される。 -\fIsv_handler\fP にシグナルハンドラのアドレスを指定した場合、 \fIsv_flags\fP -フィールドはハンドラが呼ばれた際の挙動を制御するフラグを指定する。 このフィールドには、0 か、以下のフラグを 1個以上指定できる: +\fIsv_handler\fP にシグナルハンドラーのアドレスを指定した場合、 \fIsv_flags\fP +フィールドはハンドラーが呼ばれた際の挙動を制御するフラグを指定する。 このフィールドには、0 か、以下のフラグを 1個以上指定できる: .TP \fBSV_INTERRUPT\fP -シグナルハンドラが停止中のシステムコールを中断した場合、 ハンドラから復帰しても、システムコールは再開されず、 エラー \fBEINTR\fP で失敗する。 -このフラグを指定しなかった場合、システムコールは デフォルトで再開される。 +シグナルハンドラーが停止中のシステムコールを中断した場合、 ハンドラーから復帰しても、システムコールは再開されず、 エラー \fBEINTR\fP +で失敗する。 このフラグを指定しなかった場合、システムコールは デフォルトで再開される。 .TP \fBSV_RESETHAND\fP -シグナルハンドラを呼び出す前にシグナルの動作を デフォルトにリセットする。 このフラグを指定しなかった場合、もう一度 \fBsigvec\fP() -を呼び出して明示的に削除されるか、プロセスが \fBexecve\fP(2) を実行するまで、ハンドラは設定されたままとなる。 +シグナルハンドラーを呼び出す前にシグナルの動作を デフォルトにリセットする。 このフラグを指定しなかった場合、もう一度 \fBsigvec\fP() +を呼び出して明示的に削除されるか、プロセスが \fBexecve\fP(2) を実行するまで、ハンドラーは設定されたままとなる。 .TP \fBSV_ONSTACK\fP -代替シグナルスタック上でシグナルハンドラを実行する (歴史的に、BSD では代替シグナルスタックは廃止された関数 \fBsigstack\fP() +代替シグナルスタック上でシグナルハンドラーを実行する (歴史的に、BSD では代替シグナルスタックは廃止された関数 \fBsigstack\fP() を使って設定する。POSIX では、代わりに \fBsigaltstack\fP(2) を使用する)。 .PP -関数 \fBsigmask\fP() は \fIsignum\fP に対する「シグナルマスク」を構成して返す。 例えば、以下のようなコードを使うと、 +マクロ \fBsigmask\fP() は \fIsignum\fP に対する「シグナルマスク」を構成して返す。 例えば、以下のようなコードを使うと、 \fBsigvec\fP() に渡す \fIvec.sv_mask\fP を初期化できる。 .nf - vec.sv_mask = sigmask(SIGQUIT) | sigpause(SIGABRT); + vec.sv_mask = sigmask(SIGQUIT) | sigmask(SIGABRT); /* Block SIGQUIT and SIGABRT during handler execution */ .fi @@ -117,9 +124,18 @@ struct sigvec { \fBsigblock\fP() と \fBsigsetmask\fP() は変更前のシグナルマスクを返す。 -\fBsigmask\fP() 関数は \fIsignum\fP のシグナルマスクを返す。 +\fBsigmask\fP() マクロは \fIsignum\fP のシグナルマスクを返す。 .SH エラー \fBsigaction\fP(2) と \fBsigprocmask\fP(2) の「エラー」の節を参照。 +.SH 属性 +.SS "マルチスレッディング (pthreads(7) 参照)" +関数 \fBsigvec\fP(), \fBsigblock\fP(), \fBsigsetmask\fP(), \fBsiggetmask\fP() はスレッドセーフである。 +.LP +\fBsigmask\fP() マクロはスレッドセーフである。 +.SH バージョン +バージョン 2.21 以降では、 GNU C ライブラリはもはや \fBsigvec\fP() 関数を ABI の一部として公開しなくなった。 +(後方互換性を保証するために、glibc のシンボルのバージョン付け機構により、 +古いバージョンのライブラリとリンクされたバイナリに対してはこのインターフェースが引き続き公開されている。) .SH 準拠 これらの関数のうち \fBsiggetmask\fP() 以外の全ては 4.3BSD にあった。 \fBsiggetmask\fP() の出自ははっきりしない。 これらの関数は廃止予定であり、新しいプログラムでは使用しないこと。 @@ -134,6 +150,5 @@ BSD と System V のどちらのシステムでも シグナルを待つため \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsigprocmask\fP(2), \fBraise\fP(3), \fBsigpause\fP(3), \fBsigset\fP(3), \fBsignal\fP(7) .SH この文書について -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部 -である。プロジェクトの説明とバグ報告に関する情報は -http://www.kernel.org/doc/man\-pages/ に書かれている。 +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。 +プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。