#include <signal.h> // <csignal> en C++
int sigqueue( pid_t pid, int signalId, union sigval value );
La fonction sigqueue envoie un signal à un processus en lui associant une petite valeur applicative.
La fonction retourne 0 en cas de succès et -1 en cas d'erreur.
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 |
#define _POSIX_C_SOURCE 200809L #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> static void handleSignal( int signalId, siginfo_t *info, void *context ) { (void) context; printf( "Signal %d, valeur %d.\n", signalId, info->si_value.sival_int ); } int main() { struct sigaction action; memset( &action, 0, sizeof action ); action.sa_sigaction = handleSignal; action.sa_flags = SA_SIGINFO; sigaction( SIGUSR1, &action, NULL ); union sigval value; value.sival_int = 42; sigqueue( getpid(), SIGUSR1, value ); return EXIT_SUCCESS; } |
Les résultats produits par cet exemple sont :
Signal 10, valeur 42.
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 :