SIGSET(3) | Linux Programmer's Manual | SIGSET(3) |
名前
sigset, sighold, sigrelse, sigignore - System V 版シグナル API書式
#include <signal.h>glibc 向けの機能検査マクロの要件 ( feature_test_macros(7) 参照):
_XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
説明
これらの関数は、昔ながらの System V 版シグナル API を使用しているプログラムに対して互換性のあるインタフェースを glibc で提供するものである。この API は過去のものであり、新しいアプリケーションでは POSIX シグナル API ( sigaction(2), sigprocmask(2) など) を使用すべきである。- SIG_DFL
- sig の動作をデフォルトにリセットする。
- SIG_IGN
- sig を無視する。
- SIG_HOLD
- そのプロセスのシグナルマスクに sig を追加するが、 sig の動作は変更しない。
disp にシグナルハンドラのアドレスが指定された場合、シグナルハンドラの実行中は、そのプロセスのシグナルマスクに sig が追加される。
disp に SIG_HOLD 以外の値が指定された場合、そのプロセスのシグナルマスクから sig が削除される。
シグナル SIGKILL と SIGSTOP に対する動作は変更できない。
関数 sighold() は、呼び出し元プロセスのシグナルマスクに sig を追加する。
関数 sigrelse() は、呼び出し元プロセスのシグナルマスクから sig を削除する。
関数 sigignore() は、 sig の動作を SIG_IGN に設定する。
返り値
sigset() は成功すると、呼び出し前に sig がブロックされていた場合には SIG_HOLD を返し、ブロックされていなかった場合には変更前のそのシグナルの動作を返す。エラーの場合、 sigset() は-1 を返し、 errno にエラーを示す値をセットする。但し、以下の「バグ」の節も参照のこと。エラー
sigset() に関しては、 sigaction(2) と sigprocmask(2) の「エラー」の節を参照。準拠
SVr4, POSIX.1-2001. これらの関数は廃止予定である。新しいプログラムでは使用しないこと。 POSIX.1-2008 は、 sighold(), sigignore(), sigpause(), sigrelse(), sigset() を廃止予定としている。代わりに、 sigaction(2), sigprocmask(2), pthread_sigmask(3), sigsuspend(2) の使用が推奨されている。注意
これらの関数は glibc 2.1 で登場した。バグ
2.2 より前のバージョンの glibc では、 disp に SIG_HOLD 以外の値が指定された場合、 sig のブロック解除を行っていなかった。関連項目
kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), raise(3), sigpause(3), sigvec(3), signal(7)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-09-20 | Linux |