日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
SIGVEC(2) FreeBSD システムコールマニュアル SIGVEC(2) 名称 sigvec -- ソフトウェアシグナル機能 ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <signal.h> struct sigvec { void (*sv_handler)(); int sv_mask; int sv_flags; }; int sigvec(int sig, struct sigvec *vec, struct sigvec *ovec); 解説 このインタフェースは、sigaction(2) によって時代遅れとなりました。 システムは、プロセスに配信される 1 組のシグナルを定義しています。シグナル の配信は、ハードウェア割り込みの発生に似ています: シグナルは、さらなる発 生はブロックされ、現在のプロセスのコンテキストは、保存され、新しいもの が、構築されます。プロセスは、シグナルが配信される handler (ハンドラ) を 指定するか、またはシグナルがブロックされるか、または無視されることを指定 します。また、プロセスは、デフォルトのアクションがシグナルが発生すると き、システムによって取られることを指定します。通常、シグナルハンドラは、 プロセスの現在のスタックで実行します。これは、ハンドラ単位で、変更され、 その結果、シグナルは、特別のシグナルスタックに取られます。 すべてのシグナルは、同じ優先度があります。シグナルルーチンは、ブロックさ れたそれらの呼び出しを起こしたシグナルで実行しますが、他のシグナルが、ま だ起こっているかもしれません。グローバルなシグナルマスクは、プロセスへの 配信から現在ブロックされているシグナルの集合を定義します。プロセスのため のシグナルマスクは、その親プロセスのシグナルマスクに初期化されます (通常 0)。それは、sigblock(2) または sigsetmask(2) 呼び出しで、またはシグナルが プロセスに配信されるとき、変更できます。 プロセスのためにシグナルの条件が起こるとき、シグナルは、プロセスのための 保留中のシグナルの集合に追加されます。シグナルが現在プロセスによってブ ロックされていないなら、それは、プロセスに配信されます。シグナルが配達さ れるとき、プロセスの現状が状態は、保存され、新しいシグナルマスクは、(以下 に説明されるように) 計算され、シグナルのハンドラが、呼び出されます。ハン ドラへの呼び出しは、シグナルの処理ルーチンが正常に返るなら、プロセスが、 シグナルの配信の前に、コンテキストで実行を再開できるように、手配されま す。プロセスが、異なるコンテキストで再開することを望むなら、それは、前の コンテキスト自体を復元するように手配しなければなりません。 シグナルがプロセスに配信されるとき、新しいシグナルマスクは、プロセスのシ グナルハンドラの存続期間に (または、sigblock(2) または sigsetmask(2) 呼び 出しが行われるまで) 保持されます。このマスクは、現在のシグナルマスク、配 信されるシグナルを追加し、呼び出されるハンドラに関連付けられたシグナルマ スクの論理和 (OR) 取ることによって形成されます。 sigvec() 関数は、特有のシグナルのためのハンドラに割り当てられます。vec が 0 でないなら、それは、指定されたシグナルを配信するとき、使用されるハンド ラルーチンとマスクを指定します。さらに、SV_ONSTACK ビットが sv_flags に設 定されているなら、システムは、sigaltstack(2) で指定されるシグナルスタック のプロセスにシグナルを配信します。ovec が 0 でないなら、シグナルのために 以前に扱われた情報が、ユーザに返されます。 次は、インクルードファイル <signal.h> にある名前ですべてのシグナルのリス トです: 名前 デフォルトの動作 説明 SIGHUP プロセスを終了 端末行のハングアップ SIGINT プロセスを終了 プログラムに割り込む SIGQUIT コアイメージを作成 プログラムを終了 SIGILL コアイメージを作成 不正命令 SIGTRAP コアイメージを作成 トラップを追跡 SIGABRT コアイメージを作成 abort(3) の呼び出し (以前は, SIGIOT) SIGEMT コアイメージを作成 実行されたエミュレート命令 SIGFPE コアイメージを作成 浮動小数点例外 SIGKILL プロセスを終了 プログラムを kill SIGBUS コアイメージを作成 バスエラー SIGSEGV コアイメージを作成 セグメンテーション侵害 SIGSYS コアイメージを作成 呼び出された存在しないシステム コール SIGPIPE プロセスを終了 読み込み側のないパイプに書き込み SIGALRM プロセスを終了 時間切れのリアルタイムタイマ SIGTERM プロセスを終了 ソフトウェア終了シグナル SIGURG シグナルを破棄 ソケット上に存在する緊急状態 SIGSTOP プロセスを停止 停止 (捕捉または無視できない) SIGTSTP プロセスを停止 キーボードから生成されたシグナル を停止 SIGCONT シグナルを破棄 停止後の継続 SIGCHLD シグナルを破棄 子プロセスの状態が変更された SIGTTIN プロセスを停止 制御端末から試みられたバックグラ ウンドの読み込み SIGTTOU プロセスを停止 制御端末に試みられたバックグラウ ンドの書き込み SIGIO シグナルを破棄 記述子で I/O が可能 (fcntl(2) 参 照) SIGXCPU プロセスの終了 超過した CPU 時間の制限 (setrlimit(2) を参照) SIGXFSZ プロセスの終了 超過したファイルサイズの制限 (setrlimit(2) を参照) SIGVTALRM プロセスの終了 仮想時間のアラーム (setitimer(2) を参照) SIGPROF プロセスの終了 プロファイルのタイマのアラーム (setitimer(2) を参照) SIGWINCH シグナルの破棄 ウィンドウサイズの変更 SIGINFO シグナルの破棄 キーボードからの状態要求 SIGUSR1 プロセスの終了 ユーザ定義シグナル 1 SIGUSR2 プロセスの終了 ユーザ定義シグナル 2 いったんシグナルハンドラが設置されると、それは、別の sigvec() 呼び出しが 行われるか、または execve(2) が実行されるまで、設置され続けられます。シグ ナル特有のデフォルトのアクションは、sv_handler から SIG_DFL まで設定する ことによってリセットされます。デフォルトは、たぶん、コアダンプで、プロセ スの終了、アクションなし、プロセスを停止する、または、プロセスを継続する です。シグナルのデフォルトのアクションごとに上記のシグナルのリストを参照 してください。sv_handler が SIG_IGN であるなら、シグナルの現在と保留中の インスタンスは、無視され、破棄されます。 シグナルが以下にリストされたシステムコールの間に捕獲されるなら、呼び出し は、通常、再開されます。呼び出しは、sv_flags の SV_INTERRUPT ビットを設定 することによって返される EINTR エラーで時期尚早に終了することを強制するこ とができます。影響を受けるシステムコールは、通信チャネルまたは (通常ファ イルではなく端末のような) 遅いデバイスと wait(2) または ioctl(2) の間で read(2), write(2), sendto(2), recvfrom(2), sendmsg(2) と recvmsg(2) を含 んでいます。しかしながら、既にコミットされた呼び出しは、再開されません が、代りに、部分的な成功 (例えば、短い読み込みカウント) を返します。 fork(2) または vfork(2) の後に、すべてのシグナル、シグナルマスク、シグナ ルスタックと再開/割り込みフラグは、子プロセスによって継承されます。 execve(2) システムコールは、捕獲されたすべてのシグナルのためのデフォルト のアクションを元に戻し、ユーザスタックで捕獲されるすべてのシグナルをリ セットします。無視されたシグナルは、無視され続けます。シグナルマスクは、 同じであり続けます。システムコールを割り込むシグナルは、そうし続けます。 注 vec マスクは、SIGKILL または SIGSTOP をブロックすることを許可しません。こ れは、システムによって静かに無視されます。 SV_INTERRUPT フラグは、4.2BSD で利用可能ではありません、したがって、後方 互換性が必要であるなら、使用するべきではありません。 戻り値 関数 sigvec() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno にエラーを示す値が設定されます。 使用例 VAX-11 において、ハンドラルーチンは、次のように宣言することができます: void handler(sig, code, scp) int sig, code; struct sigcontext *scp; ここで、sig は、シグナル番号で、ハードウェア障害とトラップは、以下に定義 されるようにマップされます。code 引数は、以下で与えられるような定数、また は互換性モードの障害のため、ハードウェアによって提供されるコードのいずれ かです (互換性モードの障害は、psl の PSL_CM 設定によって他の SIGILL ト ラップと区別されます)。scp 引数は、シグナルの前のコンテキストを復元するた めに使用される、(<signal.h> で定義される) sigcontext 構造体へのポインタで す。 エラー 次の 1 つが起こるなら、sigvec() 関数は、失敗し、新しいシグナルハンドラ は、設置されません: [EFAULT] vec または ovec のいずれかが、プロセスのアドレス空間の 有効な部分ではないメモリを指しています。 [EINVAL] sig 引数が、有効なシグナル番号ではありません。 [EINVAL] SIGKILL または SIGSTOP のためのハンドラを無視するか、 または供給する試みが行われました。 関連項目 kill(1), kill(2), ptrace(2), sigaction(2), sigaltstack(2), sigblock(2), sigpause(2), sigprocmask(2), sigsetmask(2), sigsuspend(2), setjmp(3), siginterrupt(3), signal(3), sigsetops(3), tty(4) バグ このマニュアルページは、まだ混乱しています。 FreeBSD 11.2 April 19, 1994 FreeBSD 11.2