Rückgabewert bei call

Hoi !

Also, ich muß aus meinem C-Programm ein anderes,
bereits existierendes Programm aufrufen. Ich
will das mit _execvp() erledigen.

Wenn ich nun _execvp(pgm, parm) aufrufe, wie
komme ich dann an den Rückgabewert des aufgerufenen
Programms ?

Oder benutze ich einfach die falsche Funktion ?

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.