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