Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] gestione segnali

    Sto trattando la gestione dei segnali su un programma client-server.

    Mi chiedo se l'approccio che sto usando va bene, dato che e' la prima volta che mi ci trovo davanti.

    Di seguito vi riporto il codice relativo alla gestione dei segnali.


    struct sigaction sign; /*struttura per la gestione dei segnali*/
    sigset_t set; /*signal mask*/

    /*maschero temporaneamente i segnali*/
    if(sigfillset(&set)==-1){ /*pongo la nuova maschera tutta a 1, blocco tutti i segnali*/
    perror("main: sigfillset");
    exit(EXIT_FAILURE);
    }

    if(sigprocmask(SIG_SETMASK,&set,NULL)==-1) /*setto la nuova maschera*/
    perror("main: sigprocmask");

    /*inizio a gestire i segnali*/
    memset(&sign,0,sizeof(sign));
    sign.sa_handler=SigIntHandler;
    sign.sa_flags = SA_RESTART;
    if(sigaction(SIGINT,&sign,NULL)==-1) /*installo nuovo segnale SIGINT*/
    perror("main: sigfillset");
    sign.sa_handler = ResizeHandler;
    sign.sa_flags = SA_RESTART;
    if(sigaction(SIGWINCH, &sign, NULL)==-1) /*installo segnale SIGWINCH(resize win)*/
    perror("main: sigfillset");

    /*tolgo la maschera temporanea*/
    if(sigemptyset(&set)==-1)
    perror("main:sigemptyset");

    if(sigprocmask(SIG_SETMASK,&set,NULL)==-1) /*setto la nuova maschera*/
    perror("main: sigprocmask");

    l'idea di fondo e' quella di usare una maschere temporanea per ignorare tutti i segnali, mentre mi creo la maschera che gestira' i miei segnali. Per evitare che arrivi un interruzione durante questo processo. Alla fine setto la maschera che ho creato.

    quello che ho scritto ha senso con quello che voglio fare io? o sbaglio qualcosa?
    grazie a chiunque mi risponda.

  2. #2
    UP

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.