Hallo,
ich bin in einem c-programm, habe ein child ge-forked.
Dieses soll ein paar kleinere (typische script) aufgaben erledigen, u.a. den kompilierprozess eines c-codes ausführen
anschließend das resultierende binary starten.
Bisher habe ich das in 3 Schritten gemacht:
1) fork
2) über meherere systm() aufrufe die scriptaufgaben erledigt (also z.B. den Kompilierprozess gestartet)
3) nachdem das auszuführende binary in 2) gebaut wurde mache ich execl um das binary auszuführen
Mein Problem: system() forked ein weiteres kind (also ein kind-kind). Ich brauche die CPU/Speicherlast aber sozusagen auf dem Kindprozess (weil ich den monitore).
-> system vermeiden und direkt 2) und 3) als ein execl ausführen wäre eine Lösung.
Ich könnte ein shellscript schreiben welches 2) erledigt und dann das binary startet und dieses dann per execl ausführen
execl("/bin/sh", "sh", "/path/to/my/script.sh", (char *) NULL);
Ich frage mich ob das einen extra overhead erzeugt? Welche shell sollte man dafür verwenden? Da ich eine vielzahl solcher binaries starte wäre es wichtig daß der footprint (mem und cpu) vergleichbar zur ursprünglichen Lösung bleibt.
Danke!
Alexander
Lesezeichen