Exit-Code von Shellbefehl in C auswerten

Jens Nixdorf <[email protected]>
Newsgroups gmane.linux.suse.programming
Organization .
Message-ID <[email protected]>
Hallo,

ich möchte wie im Subject beschrieben, den Exit-Code eines 
Shell-Kommandos in C auswerten. In diesem Fall handelt es sich um eine 
Netzwerk-Konfiguration mit dem Shellbefehl "pump -i eth0", der bei 
Verfügbarkeit eines DHCP-Servers gleich alles einstellt und bei Erfolg 
eine Null zurückgibt. Hier mein erster Versuch:

int rc=0;
rc=system("pump -i eth0");

Das hat nicht funktioniert, weil in rc eine 5 erscheint. Der nächste 
Versuch war mit dem Makro WEXITSTATUS:

int rc=0, status=0;
status=system("pump -i eth0");
rc=WEXITSTATUS(status);

In diesem Fall bleibt rc immer Null, auch wenn ich den Shellbefehl 
fehlerhaft schreibe, so dass er in der Bash -1 zurückgeben würde.

Dann hab ich nach diversen man-Pages und Googleien noch einen dritten 
Versuch gemacht:

int rc=0, status=0;
status=system("pump -i eth0");
if (WIFEXITED(status)!=NULL)
{
   rc=WEXITSTATUS(status);
}

Aber da läuft das Programm überhaupt nie in die IF-Abfrage rein, weil 
WIFEXITED scheinbar immer eine Null zurückgibt, unabhängig davon, ob der 
Shellbefehl erfolgreich beendet wurde oder nicht. 

Bei allen o.a. Varianten wird der Befehl übrigens tatsächlich ausgeführt. 

Wo liegt da mein Denkfehler? Oder wie bekomme ich sonst $? von dem 
Shellbefehl in mein Programm (mal abgesehen von der Ablage in temp. 
Dateien).

Danke, Jens
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.