SIGINTERRUPT(3) | FreeBSD Library Functions Manual | SIGINTERRUPT(3) |
名称
siginterrupt — システムコールを割り込むシグナルを許可するライブラリ
Standard C Library (libc, -lc)解説
siginterrupt() 関数は、システムコールが指定されたシグナルによって割り込まれるとき、システムコールの再開の振る舞いを変更するために使用されます。フラグが偽 (0) であるなら、システムコールは、それらが指定されたシグナルによって割り込まれ、データがまだ転送されていないなら、再開されます。システムコールの再開は、 4.2BSD 以降のデフォルトの振る舞いであり、 FreeBSD で signal(3) のためのデフォルトの振る舞いです。フラグが真 (1) であるなら、システムコールの再開は、無効にされます。システムコールが指定されたシグナルによって割り込まれ、データが転送されていないなら、システムコールは、グローバル変数 errno に EINTR に設定して、-1 を返します。データを転送し始めた割り込まれたシステムコールは、実際に転送されたデータの量を返します。システムコールの割り込みは、 4.1BSD と AT&T System V UNIX システムにあるシグナルの振る舞いです。
新しい 4.2BSD シグナル操作セマンティクスは、いかなる他の方法でも変更されないことに注意してください。中でも注目すべきは、シグナルハンドラは、続く sigaction(2) 呼び出しによって明示的に変更されるまで、常にインストールされ続け、シグナルマスクは、 sigaction(2) で文書化されるように、動作します。プログラムは、プログラムの実行で望まれるたびに、再開可能と割り込み可能なシステムコールの操作の間で切り替わります。
シグナルハンドラの実行の間に siginterrupt( 3) 呼び出しを発行することによって、新しいアクションは、補足される次のシグナルで起こります。
戻り値
The siginterrupt() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.エラー
siginterrupt() 呼び出しは、次の場合に失敗します:- [ EINVAL]
- sig 引数が、有効なシグナル番号ではありません。
歴史
siginterrupt() 関数は、 4.3BSD で登場しました。June 4, 1993 | FreeBSD |