[C] uso di signal

di il
1 risposte

[C] uso di signal

Ciao a tutti,
vediamo se riesco a spiegare quello che vorrei fare
Ho un certo main, che semplificato potrebbe essere così:
int main(void){
    int variabile1;
    int variabile2;
    void (*sighandler_ptr)(int);
    sighandler_ptr = &funzioneA;
    signal(SIGINT, sighandler_ptr);
    ...
quello che mi serve è che quando il processo intercetta CTRL-C e quindi passa alla funzione "funzioneA" per gestire il segnale, vorrei che da questa funzione sia possibile chiamare una funzione ("funzioneB" ad esempio) che prende come parametri &variabile1 e &varaibile2 dichiarate nel main.
void funzioneA(int signum){
    ...
    funzioneB(&variabile1, &varaibile2);
    ....
}
quello che mi è venuto in mente è di dichiarare le variabili "variabile1" e "variabile2" fuori dal main, ma dovrei stravolgere tante cose e non credo che usare varaibili globali sia una buona soluzione (o sbaglio?)
Altra cosa che mi è venuta in mente è: è possibile controllare il valore di ritorno di funzioneA?Ho letto che ritorna "signum" in caso di successo e -1 in caso di errore, ma come posso fare per controllare questo valore nel main?
in modo da poter fare
]int main(void){
    int variabile1;
    int variabile2;
    void (*sighandler_ptr)(int);
    sighandler_ptr = &funzioneA;
    signal(SIGINT, sighandler_ptr);
    if(ritorno == 2){
        funzioneB(&variabile1, &variabile2);
    ..

1 Risposte

  • Re: [C] uso di signal

    L'opzione corretta sarebbe utilizzare delle variabili globali. Tuttavia è sconsigliato operare con altre operazioni all'interno della gestione del segnale. Dovresti operare con una sola variabile locale (un flag booleano) che imposterai a true all'interno della funzione del segnale.

    In base a quello opererai nel main.
Devi accedere o registrarti per scrivere nel forum
1 risposte