Приостановить поток до получения сигнала
#include <sys/neutrino.h>int SignalSuspend( const sigset_t *set );int SignalSuspend_r( const sigset_t *set );
sigset_t
, определяющий сигналы, которые необходимо ожидать.libc
Данные системные вызовы заменяют маску сигналов потока набором сигналов, на которые указывает set, а затем приостанавливают поток до тех пор, пока не будет доставлен сигнал, действием которого является либо выполнение обработчика сигнала, либо завершение потока. При возврате восстанавливается предыдущая маска сигнала.
Функции SignalSuspend() и SignalSuspend_r() идентичны, за исключением того, как они указывают на ошибки.
Вместо прямого использования этих системных вызовов следует рассмотреть возможность вызова sigsuspend(). |
Попытки заблокировать SIGKILL
или SIGSTOP
игнорируются. Эти действия не приводят к возникновению ошибки.
При использовании SignalSuspend() для синхронного ожидания сигнала, следует рассмотреть возможность использования более эффективного вызова в реальном времени sigwaitinfo() стандарта POSIX 1003.1b.
Поскольку SignalSuspend() и SignalSuspend_r() блокируются до тех пор, пока не будет прерваны, возвращаемое значение при успешном завершении отсутствует.
-1
, код ошибки записывается в errno. Если обработчик сигнала вызывает longjmp() или siglongjmp(), то SignalSuspend() и SignalSuspend_r() не завершатся.
ЗОСРВ «Нейтрино»
Предыдущий раздел: Описание API системной библиотеки