002
24.10.2006, 23:24 Uhr
Bibbel
|
Hi Pler,
erstmal danke für die Antwort! So wie Du das beschriebn hast, hab ich das auch verstanden und hätte es auch so gemacht, aber das Problem ist folgendes:
1. Ich hab gelesen, dass der Signal()-Befehl eigentlich veraltet ist (und auch einige "Fußangeln" hat) und durch das Konstrukt "sigaction" erstetzt werden soll. Das würde dann in etwa so aussehen:
C++: |
sigset_t mask; //das ist die Signalmaske; das ist eine Liste mit Signalen struct sigaction act; /* jetzt wird der Signal_handler zugeweisen, alternativ könnte man act.sa_handler noch auf SIG_IGN (also ignorieren), oder SIG_DFL (Standardreaktion) setzen */ act.sa_handler = signal_handler; sigemptyset(&act.sa_mask); /* clear signal mask */ act.sa_flags = 0; // Signalhandler wird registriert if (sigaction(SIGUSER1, &act, NULL)) { perror("sigaction"); exit(-1); }
|
der Handler würde aussehen, wie bei Dir.
2. Also ich hatte mit meinem Prof über die Aufgabe geredet und er hatte gemeint, ich solle in der Oberklasse ne Wrapper-Methode basteln und in der abgeleiteten den eigentlichen Signalbehandler (Das wäre ja dann das, was Du geschrieben hattest, laut meiner Auffasung) bauen. Nur die Wrapper-Methode macht mir jetzt zu schaffen. In der soll ich die ganze Initialisierung machen; also Masken initialisieren und konfigurieren (wenn ich ihn da richtig verstanden habe). Nach der ganzen Initialisierungskiste würde ich dann den eigentlichen Signal_Handler dem sigaction zuweisen ((act.sa_handler = signal_handler also die Signal_Handler Methode ist auch in der Oberklasse vorhanden, ist aber als virtuelle Methode deklariert und es wird noch nix gemacht -> soll in der abgeleiteten Klasse passieren). So, jetzt hab ich aber das Problem, dass ich bei der Registrierung des Signal_Handlers (sigaction(SIGUSER1, &act, NULL)) ja eine Signal-nummer angeben muss. Wo kriege ich die her? Ich meine die Wrapper-Methode muss ich ja auch irgendwann aufrufen, oder als Signal_Handler registrieren. Mein Prof. hat auch noch irgendwas gemeint, von nem statischem Feld (mit den Signalnummern), was ich anlegen solle, damit ich der Unterklasse irgendwie mitteilen kann, welches signal angekommen ist (Ich hab das nicht ganz verstanden, da muss ich ihn am besten nochmal fragen, nur Abgabe ist am Freitag und der brauch immer so ewig mit dem antworten)
Hast Du verstanden, wovon ich rede, bzw. wovon mein Prof geredet hat? Ist bestimmt etwas verwirrend geschrieben und Denkfehler hab ich bestimmt auch drin, es wäre aber schön, wenn Du mir da weiterhelfen könntest! |