#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)