#include <signal.h> // <csignal> en C++
int sigsuspend( const sigset_t *set );
La fonction sigsuspend remplace temporairement le masque des signaux puis suspend le processus jusqu'à la réception d'un signal.
La fonction retourne toujours -1 après l'exécution d'un gestionnaire de signal.
L'exemple suivant montre une utilisation simple de cette interface.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#define _POSIX_C_SOURCE 200809L #include <signal.h> #include <stdio.h> #include <stdlib.h> static volatile sig_atomic_t received = 0; static void handleSignal( int signalId ) { (void) signalId; received = 1; } int main() { signal( SIGUSR1, handleSignal ); sigset_t blocked; sigemptyset( &blocked ); sigaddset( &blocked, SIGUSR1 ); sigprocmask( SIG_BLOCK, &blocked, NULL ); raise( SIGUSR1 ); sigset_t temporaryMask; sigemptyset( &temporaryMask ); while ( ! received ) { sigsuspend( &temporaryMask ); } puts( "Signal traité." ); return EXIT_SUCCESS; } |
Les résultats produits par cet exemple sont :
Signal traité.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :