Ich möchte eine Funktion schreiben, die beliebig viele, beliebige Funktionen als Parameter bekommt und für jede dieser Funktionen einen fork() erstellt.
Dabei gibt es zwei Probleme:
a) die Parameterliste der Funktion
b) ich bin noch nicht so zuversichtlich dass das läuft
Bisher sieht es so aus:
Code:
template <class T>
void parallel(T (*funktion)(...), ...) {
va_list paramZeiger;
va_start(paramZeiger, funktion);
do {
//einen Prozess erstellen, der die Funktion ausführen soll
pid_t rueckgabe = fork();
if(rueckgabe==0) {
va_arg(paramZeiger, T);
} else
if(rueckgabe > 0) {
//Parent-Prozess macht (wenn alles gut geht) nichts
} else {
//wenn das Erzeugen des Prozesses schief geht, dann selber die
// Funktion ausführen
va_arg(paramZeiger, T);
}
} while(paramZeiger!=NULL);
va_end(paramZeiger);
}
An der Stelle "void parallel(T (*funktion)(...), ...)":
Die erste Ellipse (fett markiert) kann so eigentlich nicht richtig sein. Es sollen zwar Funktionen mit beliebigen Parameterlisten übergeben werden können, aber eine Ellipse besteht aus einem festen Parameter und dann den drei Punkten.
Wie schreibe ich das?
Würde der Code so funktionieren? Ich hab grad keine Gelegenheit um das Praktisch zu testen.
Lesezeichen