Ich versuche, SIGTRAP zu ignorieren. Ich habe folgenden Proof-of-Concept-Code:Warum funktioniert das Ignorieren von SIGTRAP nicht mit asm?
#include <signal.h>
#include <stdlib.h>
int main(){
signal(SIGTRAP, SIG_IGN);
write(1, "A", 1);
asm("int3");
write(1, "B", 1);
return 0;
}
Wenn ich es laufen, erwarte ich, um zu sehen, "AB", aber ich sehe
ATrace/breakpoint trap (core dumped)
Warum wird mein Programm beenden, obwohl es SIGTRAP ignorieren ?
Nebenbei bemerkt, wenn ich einen benutzerdefinierten Handler verwenden (wie folgt aus: 'Leere SIGTRAP (int signum) {} ') dann sehe ich richtig" AB ", aber ich möchte SIG_IGN verwenden, da dies bei execve-Anrufen vererbt wird. – Chris
Eine interessante Nebensache: Dieser Code läuft "korrekt" (gibt 'AB' aus) unter Mac OS X. – duskwuff