7.1 組み込みモジュール signal

  このモジュールはパイソンでシグナルハンドラを使うための仕組みを提供します。 シグナルハンドラを使う場合一般的なルールがいくつかあります。

signalモジュールで定義されている変数:

SIG_DFL
これは2つの標準シグナル処理オプションのうちの1つで、シグナルに対するデフォルト関数を単純に実行します。例えば、多くのシステムではSIGQUITに対するデフォルトアクションはコアを吐いて終了することです。一方SIGCLDに対するデフォルトアクションはそれを無視することです。

SIG_IGN
これはもう一方の標準シグナルハンドラで、単純に与えられたシグナルを無視します。

SIG*
すべてのシグナル番号は記号的に定義されています。例えば、ハングアップシグナルはsignal.SIGHUPとして定義されています。変数名はCプログラムで使われていて、"<signal.h>"にある名前と同じです。Unixの`signal()'に関するmanページに存在するシグナルの一覧があります(あるシステムではsignal(2)に、また別のシステムではsignal(7)に一覧があります)。 すべてのシステムが同じシグナル名の組を定義しているわけではなく、システムで定義されているシグナル名のみがこのモジュールで定義されていることに注意して下さい。

NSIG
最も高いシグナル番号より1大きい数。

signalモジュールは以下の関数を定義しています。

alarm (time)
timeが0でなければ、この関数はtime秒でそのプロセスにSIGALRMシグナルが送られることを要求します。 過去にスケジュールされたどのアラームもキャンセルされます(つまりいつでも1つのアラームのみがスケジュール可能です)。 戻り値は、過去セットされたアラームが上がるまでの残り秒数です。
timeが0のときはアラームはスケジュールされず、スケジュールされていたアラームはキャンセルされません。戻り値は過去にスケジュールされたアラームまでに残っている秒数です。戻り値が0のときは現在スケジュールされているアラームはありません。(Unixのmanページalarm(2)を参照)

getsignal (signalnum)
シグナルsignalnumに対する現在のシグナルハンドラを返します。 戻り値は呼び出し可能なパイソンオブジェクト、または特別な値signal.SIG_IGNsignal.SIG_DFLNoneのうちの1つです。 ここでsignal.SIG_IGNはそのシグナルが過去に無視されたことを意味し、 signal.SIG_DFLはそのシグナルのデフォルト処理が過去に使用されたことを意味し、Noneは以前のシグナルハンドラはパイソンからインストールされていないことを意味しています。

pause ()
シグナルを受け取るまでそのプロセスをスリープさせます。適切なハンドラがその後呼び出されます。戻り値はありません。(Unixのmanページsignal(2)を参照)

signal (signalnum, handler)
シグナルsignalnumに対するハンドラを関数handlerにセットする。 handlerは呼び出し可能なパイソンオブジェクト、または特別な値signal.SIG_IGNまたはsignal.SIG_DFLを指定できます。 以前のシグナルハンドラが戻されます(上記getsignal()の説明を参照)。
(Unixのmanページsignal(2)を参照)

スレッドが有効な場合はこの関数はメインスレッドからのみ呼び出すことができます。 他のスレッドから呼び出そうとするとValueError例外が発生します。

handlerは2つの引数で呼ばれます。シグナル番号と現在のスタックフレーム(Noneまたはframeオブジェクト:frameオブジェクトの説明はリファレンスマニュアルを参照)です。  

guido@python.org