Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Fonction sigqueue (POSIX)

Entête à inclure

#include <signal.h>  // <csignal> en C++

Fonction sigqueue (POSIX)

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.

Paramètres

Valeur de retour

La fonction retourne 0 en cas de succès et -1 en cas d'erreur.

Exemple de code

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;
}
Exemple d'utilisation de sigqueue

Les résultats produits par cet exemple sont :

Signal 10, valeur 42.

Sujets connexes

<signal.h>
union sigval
siginfo_t


Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé