Wie findet man eine Default Action bei einem gefangenen Sign

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
El Nino
Beiträge: 11
Registriert: 10.09.2005 02:23:04

Wie findet man eine Default Action bei einem gefangenen Sign

Beitrag von El Nino » 13.06.2006 23:04:22

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!

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 13.06.2006 23:13:47

Code: Alles auswählen

man 7 signal

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 13.06.2006 23:22:41

indem du dir ansiehst welche syscalls abgesetzt werden

Code: Alles auswählen

strace
Genauers kann man nicht sagen, da du nicht mehr Information geliefert hast.

markus

El Nino
Beiträge: 11
Registriert: 10.09.2005 02:23:04

Beitrag von El Nino » 13.06.2006 23:25:47

ok, danke, aber ich meinte was anderes...
das programm muss das gefangene signal analysieren...

El Nino
Beiträge: 11
Registriert: 10.09.2005 02:23:04

Beitrag von El Nino » 13.06.2006 23:36:41

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.

El Nino
Beiträge: 11
Registriert: 10.09.2005 02:23:04

Beitrag von El Nino » 14.06.2006 21:23:27

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....

Antworten