[C][Linux] frage zu signalhandler
-
Koennte mir mal bitte einer von euch die folgende funktion erklaeren sie ist aus dem buc Linux - Unix Programmierung von pronix.de ... ich versteh denn sinn der typedef nicht so ganz was hat der funktionszeiger fuer eine aufgabe?
Und wieso wird der alte sa_handler zurueckgegeben?aufgerufen wird die funktion spaeter mit
handle_signal(SIGHUP, SIG_IGN);
ich hoffe einer von euch kann mich erleuchten
typedef void (*sighandler_t)(int); static sighandler_t handle_signal (int sig_nr, sighandler_t signalhandler) { struct sigaction neu_sig, alt_sig; neu_sig.sa_handler = signalhandler; sigemptyset (&neu_sig.sa_mask); neu_sig.sa_flags = SA_RESTART; if (sigaction (sig_nr, &neu_sig, &alt_sig) < 0) return SIG_ERR; return alt_sig.sa_handler; }
-
1. Parameter ist das Signal, auf das reagiert werden soll,
2. Parameter, die Funktion die dann aufgerufen werden soll.Der typedef soll das Ganze nur lesbarer machen.
-
ja soweit war ich auch schon ... was fuer mich unklar ist SIG_IGN ist doch eine konstante und keine funktion und wieso wird der alte sa_handler zurueckgegeben?
das mit dem typedef hat sich dann schonmal geklaert
-
TDO schrieb:
ja soweit war ich auch schon ... was fuer mich unklar ist SIG_IGN ist doch eine konstante und keine funktion und wieso wird der alte sa_handler zurueckgegeben?
das mit dem typedef hat sich dann schonmal geklaert
man sigaction Da sollte alles drin stehen.