sysv_signal - System V
方式のシグナル処理
#define _GNU_SOURCE /*
feature_test_macros(7) 参照 */
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t sysv_signal(int signum, sighandler_t
handler );
sysv_signal() 関数は
signal(2)
と同じ引き数をとり、同じ処理を実行する。
しかしながら、
sysv_signal()
は System V
の信頼性に欠けるシグナル処理方式を提供している。
信頼性に欠けるシグナル処理方式は以下の特徴を持つ。
a)
ハンドラが起動されると、シグナルの処理方法
(disposition) が
デフォルトにリセットされる、
b)
シグナルハンドラの実行中は、それ以降に発生した同じシグナルの配送が
ブロックされない、 c)
ハンドラが停止中の
(blocking している)
システムコールを中断した場合、
自動的に再開されないシステムコールがある。
返り値¶
sysv_signal()
関数はシグナルハンドラの直前の値を返す。
エラーの場合、
SIG_ERR
を返す。
エラー¶
signal(2) と同じ。
この関数は非標準である。
sysv_signal()
の使用は避けるべきである。代わりに
sigaction(2) を使うこと。
以前の Linux
システムでは、
sysv_signal()
と
signal(2)
は等価であった。しかし、新しめのシステムでは、
signal(2)
は信頼性のあるシグナル処理方式を提供している。
詳細は
signal(2) を参照。
sighandler_t
を使っているのは GNU
による拡張である。
この型は機能検査マクロ
_GNU_SOURCE
を定義した場合にのみ定義される。
関連項目¶
sigaction(2),
signal(2),
bsd_signal(3),
signal(7)
この文書について¶
この man ページは Linux
man-pages
プロジェクトのリリース
3.41 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。