Bonsoir, j'aimerais vous poser une question sur le bout de code suivant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
struct sigaction s2;
 
void traitementSignal(int s)
{
 
    if(i!=5)
    {
        i++;
        printf("Signal %d reçu\n",i);
    }else{
         sigaction(SIGINT,&s2,NULL);
    }
 
}
 
int main()
{
	struct sigaction s;
    s.sa_handler=traitementSignal;
    sigemptyset(&s.sa_mask);
    sigaction(SIGINT,&s,&s2);
    while(1);
    return 0;
}
J'empêche donc 5 fois l'interruption du programme avant de remettre le comportement par défaut.

Mais, j'aime pas trop le fait de mettre une variable en global comme ça...dans mon cas s2.

Y aurait il un moyen de déclarer s2 dans le main afin de le passer en paramètre de traitementSignal ? Si oui comment le code va t'il changer au niveau des appels ?

Merci d'avance.