Ontbinden sigaction handler

Ik heb een handler-functie succesvol gekoppeld aan SIG_INT en SIG_KILL, maar nu zou ik de handler op een bepaald moment (na een vork om precies te zijn) te kunnen "ontbinden". Dit is hoe ik de handler bevestig:

struct sigaction sa;
sa.sa_handler = interrupt_handler;
sigempty(&sa.sa_mask);
sa.sa_flags = SA_SIGINFO;

sigaction(SIG_INT, &sa, NULL);
sigaction(SIG_KILL, &sa, NULL);

interrupt_handler drukt alleen iets af.

0
Je kunt een SIGKILL-signaal niet "vangen". Het zal altijd het programma beëindigen.
toegevoegd de auteur Milan, de bron
@Milan: Doug McIlroy kan SIGKILL vangen. cs.dartmouth.edu/~sinclair/doug
toegevoegd de auteur ninjalj, de bron
@Milan bedankt voor de heads-up, had het toch niet echt nodig om een ​​moord te vangen.
toegevoegd de auteur zeebonk, de bron

1 antwoord

Waarschijnlijk wilt u de vorige instelling herstellen:

struct sigaction sa, oldsa;

/* Change it but save previous state. */
sigaction(SIG_INT, &sa, &oldsa);

/* ... */

/* Restore previous stuff. */
sigaction(SIG_INT, &oldsa, NULL);
4
toegevoegd
Bedankt, @cnicutar! Precies wat ik zocht!
toegevoegd de auteur zeebonk, de bron