Programme Wrapper qui règle le gestionnaire de signaux

Je voudrais avoir un programme wrapper qui exécute une command donnée et définit un gestionnaire de signal afin qu'il soit exécuté lorsque la command reçoit un signal spécifié.

La question est la suivante:

  1. Existe-t-il un programme utilitaire pour le faire?
  2. Sinon, est-il possible de le faire en utilisant les commands bash et trap ?
  3. Si non, comment puis-je faire cela? (par exemple en écrivant un programme moi-même en C qui fait quelques appels système)

EDIT: La plate-forme cible est GNU / Linux.

EDIT 2: Suite à la réponse d'Ignacio, j'ai réussi à écrire un préchargement SO qui ressemble à ceci .

Ne peut pas être fait. De la page de manuel exec(3p) :

Les signaux définis pour être capturés par l'image du process appelant doivent être définis sur l'action par défaut dans la nouvelle image de process.

Vous devez écrire un préchargement SO qui relierait les gestionnaires de signaux avant le début du programme.

Vous pourriez seulement l'avoir ignorer les signaux ( SIG_IGN ); vous ne seriez pas en mesure de donner un gestionnaire de signal depuis le shell ( trap ) ou dans un programme C ( signal(2) ). Quand exec est appelé, tout gestionnaire de signal sera remplacé.

Exemple:

 : trap "" 1 2 exec sleep 100000 

Ensuite, appelez le programme, en arrière-plan ou avant, et envoyez un SIGHUP ou un SIGINT au programme. Il est ignoré. Mettre le code dans le piège provoque la réinitialisation du signal sur exec:

 : trap "echo signal caught" 1 2 exec sleep 10000 

Cela n'imprimera pas "signal attrapé" de vous envoyer les signaux, mais va en fait mettre fin au programme.