tail head cat sleep
QR code linking to this page

manページ  — SIGINTERRUPT

名称

siginterrupt – シグナルがシステムコールを中断できるようにする

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <signal.h>

int
siginterrupt(int sig, int flag);

解説

siginterrupt() 関数を使用して、システムコールが指定のシグナルによって割り込まれたときに、 システムコール再開始の動作を変更します。 フラグが偽 (0) の場合、システムコールは、指定のシグナルによって割り込みされ、 しかもデータがまだ転送されていない場合に再開始されます。 システムコールの再開始は、 BSD 4.2 以降のデフォルトの動作であり、 FreeBSD での signal(3) のデフォルトの 動作です。

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

新しい BSD 4.2 シグナル処理のセマンティクスはどちらにしても変更されていません。 最も注目すべきは、シグナルハンドラは、後続の sigaction(2) 呼び出しによって明示的に変更されるまで、そして sigaction(2) で文書化したようにシグナルマスクが動作するまで、 必ずインストールされたままになることです。 プログラムは、プログラムの実行の間、必要なだけ頻繁に再起動可能な システムコール操作と割り込み可能なシステムコール操作の間で切り替えできます。

シグナルハンドラの実行の間に siginterrupt(3) を呼び出すと、捕捉される次のシグナルで 新しい処置が行われます。

このライブラリルーチンは、 BSD 4.2 では利用できない 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 は有効なシグナル番号ではありません。

関連項目

sigaction(2), sigblock(2), sigpause(2), sigsetmask(2), signal(3)

歴史

siginterrupt() 関数は BSD 4.3 で登場しました。

SIGINTERRUPT (3) June 4, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.