SIGINTERRUPT(3) — NEWS-OS Programmer’s Manual
名称
siginterrupt − シグナルのシステムコールへの割り込みを許可する
形式
siginterrupt(sig, flag);
int sig, flag;
解説
siginterrupt は、 システムコールが指定シグナルによって割り込まれたとき、 システムコールの再スタート処理を 変更するために使用します。 flag が偽(値 0)ならば、 指定シグナルで割り込まれ、 かつまだデータが転送されていない場合、 システムコールは再スタートされます。 システムコールの再スタートは、 NEWS-OS 2.X (4.2 BSD)上においては、 デフォルトの処理です。
flag が真(値 1)ならば、 システムコールの再スタートはできません。 システムコールが指定シグナルによって割り込まれ、 かつデータが転送されていない場合、 そのシステムコールはエラー番号(errno)に EINTR を セットして −1 を返します。 また、 割り込みのあったシステムコールが、 データの転送を開始していた場合は、 実際に転送された分のデータの大きさを返します。 システムコールの割り込みは、 4.1 BSD 及び AT&T System V UNIX システムでみられるシグナル処理です。
新しいNEWS-OS 2.X (4.2 BSD)のシグナル処理のセマンティックスは、 他にどんな方法を 用いても変更されないことに注意してください。 特に、 シグナルハンドラは、新たに sigvec(2) の呼び出しによって明示的に変更されるまで、 通常そのまま残されます。 また、 シグナルのマスクは、 sigvec(2) 中で述べられているように働きます。 プログラムは、 実行中に、 好きなようにシステムコールの動作を、 再スタート可能にするようにするか割り込み可能にするかを選択できます。
シグナルハンドラの実行中に siginterrupt(3) の呼び出しを 発行すると、 次のシグナルが受信される時に新しい動作が起こるようにすることができます。
注意事項
このライブラリルーチンは、 NEWS-OS 2.X (4.2BSD)では利用できない sigvec(2) システムコールの拡張版を使用します。 従って、 過去の互換性を必要とする場合、 使用するべきではありません。
リターン値
値 0 は、 この呼び出しが正常終了したことを示します。 値 −1 は、 無効なシグナル番号が与えられたことを示します。
関連事項
sigvec(2), sigblock(2), sigpause(2), sigsetmask(2)
NEWS-OSRelease 4.1C