kazmax - Linux で自宅サーバー

gsignal - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 準拠
  5. 関連項目

名前

gsignal, ssignal - ソフトウェア・シグナル機能

書式

#include <signal.h>

typedef void (*sighandler_t)(int);
int gsignal(signum);
sighandler_t ssignal(int signum, sighandler_t action);

説明

Linux ではこれらの関数を使用しないこと。 過去に間違いがあり、Linux では gsignal()と ssignal()はそれぞれ raise()と signal()の別名になっている。

一方、System V 風のシステムでは、これらの関数で、 従来のシグナル関数や kill 関数群とは完全に独立な、 ソフトウェア・シグナリングを実現している。 ssignal()関数は、番号 signumのソフトウェア・シグナルが gsignal()関数を使って発生された時にとるべきアクションを定義する。 gsignal()の返り値は、一つ前に指定されていたアクション、もしくは SIG_DFL である。 gsignal()は以下のような動作を行う: signumに対してアクションが指定されていないか、アクション SIG_DFL が指定されていた 場合、何もせずに 0 を返す。 signumに対して アクション SIG_IGN が指定されていた場合、 何もせずに 1 を返す。 それ以外の場合、アクションを SIG_DFL にリセットし、 引き数に signumを指定してアクション関数を呼び出して、アクション関数の返り値を返す。 signumがとり得る値の範囲は実装により異なる (多くの場合 1〜15 か 1〜17 である)。

準拠

これらの関数は、AIX, DG/UX, HP-UX, SCO, Solaris, Tru64 で使用可能である。 これらのシステムのほとんどで廃止されたことになっており、 Linux の libc および glibc では正しく実装されていない。 gsignal_r()と ssignal_r()が実装されているシステムもある。

関連項目