[C] Rückgabewerte über system() auswertbar?

NoWayOut

Cadet 4th Year
Registriert
Dez. 2004
Beiträge
86
Hallo,

ich habe 2 Programme, das Hauptprogramm ruft über
errno=system("prog2.exe");
ein anderes Programm auf.
Dies Programm prog2.exe hat verschiedene Rückgabewerte, wie 1 bei Fehler, 0 bei ok.
Der system Befehl liefert aber nur die ErrNo zurück, sprich ob der Befehlsinterpreter Fehler gemeldet hat, nicht aber das Programm selbst.
Wie kann ich auf den Rückgabewert des aufgerufenen Programmes zugreifen? Gibts da einen anderen Befehl?

Gruß,

NoWayOut
 
system() liefert den Return-Code des Programmes und -1 im Fehlerfall. Im Fehlerfall kannst Du dann über errno den Fehlercode von system() abfragen. Vom Return-Wert darfst Du nur die ersten 8 Bit auswerten. So steht es zumindest in der Manpage zu system.
 
Ich habe dazu folgendes gefunden:

If command is NULL and the command interpreter is found, the function returns a nonzero value. If the command interpreter is not found, it returns 0 and sets errno to ENOENT. If command is not NULL, system returns the value that is returned by the command interpreter. It returns the value 0 only if the command interpreter returns the value 0. A return value of – 1 indicates an error, and errno is set to one of the following values: ...

Ich hatte eigentlich auch erwartet, dass der Befehlsinterpreter mir den Rückgabewert des Programmes weiterleitet, aber das klappt leider nicht :(
Der sagt nur ja, kann geöffnet werden, nein, Fehler beim öffnen.
 
Erledigt, mit system geht es nicht, man nehme _spawnl() :)
 
Hmm von Funktionen, die mit _ anfangen, sollte man grundsätzlich die Finger lassen. Bis jetzt hatte system bei mir immer so funktioniert. Werd mit _spawnl aber mal anschauen. :)
 
Zurück
Oben