J'ai posé une question similaire sur un forum il y a peu de temps, c'est encore tout frais
Par définition la fonction appelée par le signal doit effectuer un minimum de traitements. La réception du signal interrompt toute action en cour et laisse la mémoire dans un état incertain. C'est pour cela qui faut faire le moins d'action possible et surtout ne pas utiliser de primitives. Elle doit simplement modifier quelques marqueurs qui indiqueront à ton programme l'action qu'il doit effectuer.
De plus un marqueur doit être modifié en un seul accès mémoire, pour ne pas créer de conflit.
Il doit être déclaré comme ceci :
Code :
- static volatile sig_atomic_t flag;
|
A la charge de ton programme de tester la valeur du signal et de déclencher les traitement adéquats.
Un bon pdf si ça t'interesse : http://www.advancedlinuxprogrammin [...] chargement
Ciao