SIGSUSPEND(2)

名称
sigsuspend - ブロックされているシグナルの解放と割込み待ちを不可分に実行

ライブラリ
libc

書式
<signal.h> int sigsuspend(const sigset_t *sigmask)

解説
sigsuspend() システムコールは、 sigmask が指す集合に、ブロックされているシグナルマスクを一時的に変更してから、 シグナルの到着を待ちます。 復帰時に、マスクされたシグナルの前の集合が復元されます。 通常の場合、シグナルマスク集合は空で、呼び出しが続く間、 すべてのシグナルがブロックされないことを表わします。

通常の用法では、 sigprocmask(2) でシグナルをブロックして重要なセクションを始め、 シグナルの発生で修正された変数を調べて 実行すべき仕事がないことを判断し、 sigprocmask(2) が返した以前のマスクで sigsuspend() を使用することでプロセスが停止して仕事を待ちます。

戻り値
sigsuspend() システムコールは、常に割り込まれることで終了し、 errno を EINTR に設定し、-1 を返します。

関連項目
sigaction(2), sigpending(2), sigprocmask(2), sigsetops(3)

規格
sigsuspend() システムコールは、 p1003.1-90 に適合しています。