#topicpath
/////////////////////////////////////////////////////////////////////////////////
* 目次 [#j279b693]
#contents();
/////////////////////////////////////////////////////////////////////////////////
* raise [#uf0abea1]
- プログラム中で人為的に SIGSEGV などを引き起こすには、 raise() を使う。
- man より
$ man raise
RAISE(3) Linux Programmer's Manual RAISE(3)
名前
raise - 呼び出し元にシグナルを送る
書式
#include <signal.h>
int raise(int sig);
説明
raise() 関数は、呼び出し元のプロセスもしくはスレッドにシグナルを送る。
シングルスレッドのプログラムでは、以下と等価である。
kill(getpid(), sig);
マルチスレッドのプログラムでは、以下と等価である。
pthread_kill(pthread_self(), sig);
シグナルに起因してシグナル・ハンドラが呼び出される場合には、 raise()
が返るのは必ずシグナル・ハンドラが返った後になる。
返り値
成功した場合は 0 を、失敗した場合は 0 以外の値を返す。
属性
マルチスレッディング (pthreads(7) 参照)
raise() 関数はスレッドセーフである。
準拠
C89, C99, POSIX.1-2001.
注意
glibc バージョン 2.3.3 以降では、カーネルが tgkill(2) システムコールを
サポートしている場合はraise() は tgkill(2) を使って実装されている。古い
バージョンの glibc では、raise() は kill(2) を使って実装されている。
関連項目
getpid(2), kill(2), sigaction(2), signal(2), pthread_kill(3), signal(7)
- raise( sig ) に渡すシグナル値 sig は、 man 7 signal にリストアップされているシグナル名若しくはその値を指定する。