Блокироваться до тех пор, пока сигнал не вызовет обработчик сигнала
#include <signal.h>int sigsuspend( const sigset_t *sigmask );
sigset_t
, определяющий новую маску сигналов.libc
Функция sigsuspend() замещает маску сигналов потока на sigmask и приостанавливает его выполнение до поступления сигнала, реакция на который будет либо в вызове функции-обработчика, либо в терминировании потока.
/** This program pauses until a signal other than* a SIGINT occurs. In this case a SIGALRM.*/#include <stdio.h>#include <signal.h>#include <stdlib.h>#include <unistd.h>sigset_t set;int main( void ){sigemptyset( &set );sigaddset( &set, SIGINT );printf( "Program suspended and immune to breaks.\n" );printf( "A SIGALRM will terminate the program in 10 seconds.\n" );alarm( 10 );sigsuspend( &set );return (EXIT_SUCCESS);}
POSIX 1003.1
pause(), pthread_sigmask(), sigaction(), sigpending(), sigprocmask()
Предыдущий раздел: Описание API системной библиотеки