Hi!
ich hab' folgendes Problem :
Ein Programm sendet ein Signal an sich selbst und versucht das Signal zu fangen.
Wie erfahre ich welche "default-aktion" (terminate, stop, etc..) bei gefangenen Signal
bestimmt ist...
Gibt's ein Mechanismus dafür?
Danke im voraus!
Wie findet man eine Default Action bei einem gefangenen Sign
Code: Alles auswählen
man 7 signal
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
indem du dir ansiehst welche syscalls abgesetzt werden
Genauers kann man nicht sagen, da du nicht mehr Information geliefert hast.
markus
Code: Alles auswählen
strace
markus
ich muss ein programm schreiben, die ein Signal an sich selbst sendet und versucht das gesendete Signal abzufangen.
Falls alles ok (abfangen erfolgreich) ist, muss das Programm den
"default action"-Typ durch den Kernel (terminate, terminate and write core, ignore, continue/stop) für das abgefangene Signal ausgeben.
Falls alles ok (abfangen erfolgreich) ist, muss das Programm den
"default action"-Typ durch den Kernel (terminate, terminate and write core, ignore, continue/stop) für das abgefangene Signal ausgeben.
Naja ich hab' schon eine Idee :
1) Programm erzeugt mit "fork" ein Kind-Prozess.
2) Programm schickt ein bestimmtes Signal mit "kill" an dieses Kind-Prozess
3) Programm wartet auf Events mit "waitpid".
4) "waitpid" liefert über "stat_val" Infos ob das Kind-Prozess terminiert oder angehalten wurde...
Mein Problem nun :
wenn das Kind-Prozess durch ein Signal terminiert, liefert stat_val korrekte Infos...
wenn aber das Kind-Prozess durch ein Signal angehalten wird, liefert stat_val falshe Infos :
WIFSTOPPED(stat_val)=0 (und das bedeuetet dass Kind-Prozess nicht angehalten wurde)
hmmm....
1) Programm erzeugt mit "fork" ein Kind-Prozess.
2) Programm schickt ein bestimmtes Signal mit "kill" an dieses Kind-Prozess
3) Programm wartet auf Events mit "waitpid".
4) "waitpid" liefert über "stat_val" Infos ob das Kind-Prozess terminiert oder angehalten wurde...
Mein Problem nun :
wenn das Kind-Prozess durch ein Signal terminiert, liefert stat_val korrekte Infos...
wenn aber das Kind-Prozess durch ein Signal angehalten wird, liefert stat_val falshe Infos :
WIFSTOPPED(stat_val)=0 (und das bedeuetet dass Kind-Prozess nicht angehalten wurde)
hmmm....