EN JA
SIGINTERRUPT(3)
SIGINTERRUPT(3) FreeBSD Library Functions Manual SIGINTERRUPT(3)

名称

siginterruptシステムコールを割り込むシグナルを許可する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < signal.h>

int
siginterrupt( int sig, int flag);

解説

siginterrupt() 関数は、システムコールが指定されたシグナルによって割り込まれるとき、システムコールの再開の振る舞いを変更するために使用されます。フラグが偽 (0) であるなら、システムコールは、それらが指定されたシグナルによって割り込まれ、データがまだ転送されていないなら、再開されます。システムコールの再開は、 4.2BSD 以降のデフォルトの振る舞いであり、 FreeBSDsignal(3) のためのデフォルトの振る舞いです。

フラグが真 (1) であるなら、システムコールの再開は、無効にされます。システムコールが指定されたシグナルによって割り込まれ、データが転送されていないなら、システムコールは、グローバル変数 errnoEINTR に設定して、-1 を返します。データを転送し始めた割り込まれたシステムコールは、実際に転送されたデータの量を返します。システムコールの割り込みは、 4.1BSD と AT&T System V UNIX システムにあるシグナルの振る舞いです。

新しい 4.2BSD シグナル操作セマンティクスは、いかなる他の方法でも変更されないことに注意してください。中でも注目すべきは、シグナルハンドラは、続く sigaction(2) 呼び出しによって明示的に変更されるまで、常にインストールされ続け、シグナルマスクは、 sigaction(2) で文書化されるように、動作します。プログラムは、プログラムの実行で望まれるたびに、再開可能と割り込み可能なシステムコールの操作の間で切り替わります。

シグナルハンドラの実行の間に siginterrupt( 3) 呼び出しを発行することによって、新しいアクションは、補足される次のシグナルで起こります。

このライブラリルーチンは、 4.2BSD で利用可能でない sigaction(2) システムコールの拡張を使用します、したがって、後方互換性が必要であるなら、使用されるべきではありません。

戻り値

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