Hallo auch,
Also, ich muß aus meinem C-Programm ein anderes,
bereits existierendes Programm aufrufen. Ich
will das mit _execvp() erledigen.
Nun, um zu dem aufrufenden Programm zurückkehren
zu können, musst Du zuerst ein Kindprozess mit fork()
generieren, darin eine exec-Funktion aufrufen
und dann mit wait(int *status) oder
waitpid(pid_t kind_pid, int *status, int options)
auf die Beendigung des Kindes warten.
Wenn ich nun _execvp(pgm, parm) aufrufe, wie
komme ich dann an den Rückgabewert des aufgerufenen
Programms ?
Mit status kannst Du dann abfragen, ob sich das
aufgerufene Programm erfolgreich beendet hat,
mehr aber auch nicht.
Oder benutze ich einfach die falsche Funktion ?
Um komplexere Daten als einfache Integer-Rückgabewerte
zwischen verschiedenen Prozessen hin- und herzuschieben
müssen wohl schwerere Geschütze der Interprozesskommunikation
ran, z.B.
Pipes: pipe() oder popen() und pclose()
FIFOs: mkfifo()
Sockets: socket(), bind(), listen(), accept(), connect()
Schau Dir die entsprechenden Manpages an oder
schreib Deinen Rückgabewert in eine Datei und
lies diese später aus …
-Andreas.