![]() |
![]() |
![]() |
Replace the signal mask, and then suspend the process
#include <signal.h> int sigsuspend( const sigset_t *sigmask );
libc
The sigsuspend() function replaces the process's signal mask with the set of signals pointed to by sigmask and then suspends the process until delivery of a signal whose action is either to execute a signal-catching function (then return), or to terminate the process.
A value of -1 is returned (if the function returns), and errno is set.
/* * 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 ); }
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
errno, pause(), sigaction(), sigpending(), sigprocmask()
![]() |
![]() |
![]() |