Funktionspointer mit teilweise fixen Parametern
-
Hi,
Wie kann ich einem Funktionspointer die Adresse einer Funktion übergeben bei der ich im Vorhinen schon Parameter weiß?
Mein Problem ist, dass ich an signal() einen Funktionspointer mit einer int Variable als Parameter übergeben muss, mein Handler aber so aussieht:
void sig_handler(int signal, int *fd);
Nun weiß ich aber nicht wie ich signal() in der main aufrufen muss wenn ich den 2ten Parameter schon weiß.
Das Ziel des ganzen soll es seinfd
nicht als globale Variable definieren zu müssenIch hoffe es ist klar was ich meine :).
LG
-
Das ganze geht nicht. Ein Zeiger auf eine Funktion ist nur eine Adresse, da kannste keinen Parameter dabei machen. global machen is wohl die einzige Lösung, oder du versuchtst dein Design zu überdenken sodass du den fd nicht mehr brauchst
-
Das macht Sinn.
Gibt es irgend eine alternative Möglichkeit ein File zu innerhalb des Signal-Handlers zu schließen? (abgesehen von globalen Variablen).LG
-
Ich wüsste jetzt keine Möglichkeit wie 2 Funktionen ohne globale Variablen und ohne Caller-Callee-Beziehung kommunizieren können. Wenn du den fd nicht global amchen willst könntest du höchstens eine globale (numerische) Variable nehmen die mit 1 initialisiert wird und die der signalhandler auf 0 setzt wodurch im hauptprogramm eine Schleife beendet wird und die Aufräumfunktionen in Gang gesetzt werden. Aber da close laut POSIX immer in einem Signalhandler aufgerufen werden darf würde ich das auch nutzen^^ ( und ein globaler fd ist jetzt nicht so schlimm, vor allem wenn man ihn static macht)
-
Offensichtlich bleibt mir nichts anderes übrig als den fd global zu machen (ohne größeres herumgemurkse ;))
Danke