OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / draft / man2 / signal.2
diff --git a/draft/man2/signal.2 b/draft/man2/signal.2
deleted file mode 100644 (file)
index 1e7d911..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-.\" Copyright (c) 2000 Andries Brouwer <aeb@cwi.nl>
-.\" and Copyright (c) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
-.\" and Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk
-.\"      <mtk.manpages@gmail.com>
-.\" based on work by Rik Faith <faith@cs.unc.edu>
-.\" and Mike Battersby <mike@starbug.apana.org.au>.
-.\"
-.\" %%%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.
-.\"
-.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
-.\" entire resulting derived work is distributed under the terms of a
-.\" permission notice identical to this one.
-.\"
-.\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume no
-.\" responsibility for errors or omissions, or for damages resulting from
-.\" the use of the information contained herein.  The author(s) may not
-.\" have taken the same level of care in the production of this manual,
-.\" which is licensed free of charge, as they might when working
-.\" professionally.
-.\"
-.\" Formatted or processed versions of this manual, if unaccompanied by
-.\" the source, must acknowledge the copyright and authors of this work.
-.\" %%%LICENSE_END
-.\"
-.\" Modified 2004-11-19, mtk:
-.\" added pointer to sigaction.2 for details of ignoring SIGCHLD
-.\" 2007-06-03, mtk: strengthened portability warning, and rewrote
-.\"     various sections.
-.\" 2008-07-11, mtk: rewrote and expanded portability discussion.
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.\"
-.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
-.\"         all rights reserved.
-.\" Translated 1997-03-03, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\" Modified 2000-09-24, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\" Updated & Modified 2002-01-14, Yuichi SATO <ysato@h4.dion.ne.jp>
-.\" Updated & Modified 2004-01-17, Yuichi SATO <ysato444@yahoo.co.jp>
-.\" Updated & Modified 2005-01-07, Yuichi SATO
-.\" Updated 2007-06-01, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.50
-.\" Updated 2007-06-13, Akihiro MOTOKI, LDP v2.55
-.\" Updated 2008-08-08, Akihiro MOTOKI, LDP v3.05
-.\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
-.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
-.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
-.\"
-.TH SIGNAL 2 2014\-08\-19 Linux "Linux Programmer's Manual"
-.SH 名前
-signal \- ANSI C シグナル操作
-.SH 書式
-\fB#include <signal.h>\fP
-.sp
-\fBtypedef void (*sighandler_t)(int);\fP
-.sp
-\fBsighandler_t signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIsighandler\fP\fB);\fP
-.SH 説明
-\fBsignal\fP()  の動作は UNIX のバージョンにより異なる。 また、歴史的に見て Linux のバージョンによっても異なっている。
-\fBこのシステムコールの使用は避け、\fP 代わりに \fBsigaction\fP(2)  を使用すること。 下記の「移植性」を参照。
-
-\fBsignal\fP()  はシグナル \fIsignum\fP の処理方法を \fIhandler\fP に設定する。 \fIhandler\fP には、
-\fBSIG_IGN\fP、 \fBSIG_DFL\fP、 プログラマが定義した関数 (「シグナルハンドラー」) のアドレスの いずれかを指定する。
-
-シグナル \fIsignum\fP がプロセスに配送されると、以下のいずれかが発生する。
-.TP  3
-*
-処理方法が \fBSIG_IGN\fP に設定されている場合、そのシグナルは無視される。
-.TP 
-*
-処理方法が \fBSIG_DFL\fP に設定されている場合、シグナルに関連づけられた デフォルトの動作が行われる (\fBsignal\fP(7)  参照)。
-.TP 
-*
-処理方法として関数が設定されている場合、 まず最初に処理方法が \fBSIG_DFL\fP にリセットされるかそのシグナルのブロックが実行された後、
-\fIsignum\fP を引き数として \fIhandler\fP が呼び出される。 ハンドラーが起動される際にシグナルがブロックされた場合、
-ハンドラーが返る際にそのシグナルのブロックが解除される。
-.PP
-シグナル \fBSIGKILL\fP と \fBSIGSTOP\fP は捕捉できず、無視することもできない。
-.SH 返り値
-\fBsignal\fP()  は、今までのシグナルハンドラーの値を返す。 エラーの場合は \fBSIG_ERR\fP を返し、 \fIerrno\fP
-にエラーの原因を示す値を設定する。
-.SH エラー
-.TP 
-\fBEINVAL\fP
-\fIsignum\fP が不正である。
-.SH 準拠
-C89, C99, POSIX.1\-2001.
-.SH 注意
-マルチスレッドプロセスにおける \fBsignal\fP()  の結果は、指定されていない。
-.PP
-POSIX では、 \fBkill\fP(2)  や \fBraise\fP(3)  で生成できないシグナル \fBSIGFPE\fP, \fBSIGILL\fP,
-\fBSIGSEGV\fP を無視 (ignore) した場合、その後の動作は未定義である。 ゼロによる整数割り算の結果は未定義となる。
-アーキテクチャーによっては、このとき \fBSIGFPE\fP シグナルが生成される。 (同様に負の最大整数を \-1 で割ると \fBSIGFPE\fP
-が生成されるかもしれない)  このシグナルを無視すると無限ループに陥るかもしれない。
-.PP
-\fBSIGCHLD\fP の動作として \fBSIG_IGN\fP を設定した場合の詳細な動作については、 \fBsigaction\fP(2)  を参照すること。
-.PP
-シグナルハンドラー内から安全に呼び出すことができる、 async\-signal\-safe functions (非同期シングルで安全な関数) の
-リストについては \fBsignal\fP(7)  を参照。
-.PP
-.\" libc4 and libc5 define
-.\" .IR SignalHandler ;
-\fIsighandler_t\fP の使用は GNU 拡張であり、 \fB_GNU_SOURCE\fP が定義された場合に公開される。glibc では
-\fB_BSD_SOURCE\fP が定義された場合には (BSD 由来の) \fIsig_t\fP も定義される。このような型を使用しないと、
-\fBsignal\fP() の宣言は読みにくいものとなる。
-.in +4n
-.nf
-
-\fBvoid ( *\fP\fIsignal\fP\fB(int \fP\fIsignum\fP\fB, void (*\fP\fIhandler\fP\fB)(int)) ) (int);\fP
-.fi
-.in
-.SS 移植性
-移植性のある \fBsignal\fP()  の使い方は、シグナルの処理方法を \fBSIG_DFL\fP か \fBSIG_IGN\fP に設定する方法だけである。
-シグナルハンドラーを設定するのに \fBsignal\fP()  を使ったときの動作はシステムにより異なる (POSIX.1
-は明示的にこの違いを認めている)。 \fB移植性が必要なときはこのシステムコールを使用しないこと。\fP
-
-POSIX.1 は、 \fBsigaction\fP(2)  を規定することで移植性に関する混乱を解決した。 \fBsigaction\fP(2)
-はシグナルハンドラーが起動される際の挙動を明示的に制御できる。 \fBsignal\fP()  の代わりにこのインターフェイスを使うこと。
-
-オリジナルの UNIX システムでは、 \fBsignal\fP()  を使って設定されたハンドラーがシグナルの配送により起動されると、
-そのシグナルの処理方法は \fBSIG_DFL\fP にリセットされ、システムは同じシグナルがさらに生成されても
-シグナルの配送をブロックしなかった。これは、以下のフラグで \fBsigaction\fP(2) を呼び出すのと等価である。
-
-    sa.sa_flags = SA_RESETHAND | SA_NODEFER;
-
-System\ V でも、 \fBsignal\fP()  に対してこれらの挙動を規定している。
-こうした挙動はまずく、ハンドラーがハンドラー自身を再設定する機会が 来るより前に、同じシグナルがまた配送される可能性がある。
-さらに、同じシグナルが立て続けに配送されると、同じシグナルが ハンドラーを繰り返し起動されることになる。
-
-BSD はこの状況が改善したが、残念なことに、その過程で既存の \fBsignal\fP() の挙動も変更された。 BSD
-では、シグナルハンドラーが起動された際、 シグナルの処理方法はリセットされず、 ハンドラーの実行中は、同じシグナルのさらなる生成は配送がブロックされる。
-また、 シグナルハンドラーが中断された場合、 停止中のシステムコールのいくつかは自動的に再スタートされる。 BSD の挙動は、 以下のフラグを指定した
-\fBsigaction\fP(2) の呼び出しと等価である。
-
-    sa.sa_flags = SA_RESTART;
-
-Linux での状況は以下の通りである。
-.IP * 2
-カーネルの \fBsignal\fP()  システムコールは System\ V 方式を提供している。
-.IP *
-デフォルトでは、glibc 2 以降では、 \fBsignal\fP()  ラッパー関数はカーネルのシステムコールを起動しない。 代わりに、ラッパー関数は
-BSD 方式を示すフラグを使って \fBsigaction\fP(2)  を呼び出す。 機能検査マクロ \fB_BSD_SOURCE\fP
-を定義していれば、このデフォルトの動作となる。 デフォルトでは、 \fB_BSD_SOURCE\fP が定義される。 \fB_BSD_SOURCE\fP は
-\fB_GNU_SOURCE\fP が定義された場合には暗黙のうちに定義され、 もちろん明示的に定義することもできる。
-.IP *
-.\"
-.\" System V semantics are also provided if one uses the separate
-.\" .BR sysv_signal (3)
-.\" function.
-.\" .IP *
-.\" The
-.\" .BR signal ()
-.\" function in Linux libc4 and libc5 provide System\ V semantics.
-.\" If one on a libc5 system includes
-.\" .I <bsd/signal.h>
-.\" instead of
-.\" .IR <signal.h> ,
-.\" then
-.\" .BR signal ()
-.\" provides BSD semantics.
-glibc 2 以降では、機能検査マクロ \fB_BSD_SOURCE\fP が定義されていなければ、 \fBsignal\fP()  は System\ V
-方式となる。 (\fBgcc\fP(1)  が標準指定モード (\fI\-std=xxx\fP or \fI\-ansi\fP)  で起動された場合、もしくは
-\fB_POSIX_SOURCE\fP, \fB_XOPEN_SOURCE\fP, \fB_SVID_SOURCE\fP
-といった他の様々な機能検査マクロが定義された場合、 デフォルトの \fB_BSD_SOURCE\fP の暗黙の定義は行われない。
-\fBfeature_test_macros\fP(7)  を参照のこと。)
-.SH 関連項目
-\fBkill\fP(1), \fBalarm\fP(2), \fBkill\fP(2), \fBkillpg\fP(2), \fBpause\fP(2),
-\fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2),
-\fBsigsuspend\fP(2), \fBbsd_signal\fP(3), \fBraise\fP(3), \fBsiginterrupt\fP(3),
-\fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBsysv_signal\fP(3),
-\fBsignal\fP(7)
-.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部である。
-プロジェクトの説明とバグ報告に関する情報は \%http://www.kernel.org/doc/man\-pages/ に書かれている。