Bonjour,
Je développe actuellement une bibliothèque faisant un pont entre une application et la libC à l'aide de LD_PRELOAD.
Je cherche à gérer le signal SIGUSR1 dans cette bibliothèque, ce que j'arrive à faire à l'aide de sigaction.
Cependant, l'application "au dessus" reçoit également le signal SIGUSR1, et son gestionnaire de signaux (celui par défaut) termine l'application, comme indiqué dans signal(7).
Existe-t-il un moyen de masquer le signal pour l'application "au dessus" tout en gérant le signal dans la bibliothèque ?
EDIT:
- Information sur le contexte : le gestionnaire est inscrit à l'initialisation de la bibliothèque (int __attribute__ ((constructor)) initialize_lib(void)
- Nouveaux tests : je me suis rendu compte qu'en fait le gestionnaire fonctionne correctement : la réception du signal fait retourner les lectures d'I/O (getc & co), ce qui faisait quitter mes anciens tests.
Nouvelle question : existe-t-il un moyen pour éviter que la réception d'un signal arrête la fonction de lecture ?
EDIT2:
La réponse à la question ci-dessus : oui.
Il faut passer le drapeau SA_RESTART lors de l'enregistrement du gestionnaire de signaux via sigaction.
En espérant que ça serve à ceux qui ont le problème
Thomas
Partager