Mailinglist Archive: opensuse-programming-de (7 mails)
| < Previous | Next > |
[opensuse-programming-de] Exit-Code von Shellbefehl in C auswerten
- From: Jens Nixdorf <jens.nixdorf.liste@xxxxxxxxxxxxx>
- Date: Thu, 13 Mar 2008 09:40:18 +0100
- Message-id: <200803130940.18538.jens.nixdorf.liste@xxxxxxxxxxxxx>
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
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-programming-de+help@xxxxxxxxxxxx
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
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-programming-de+help@xxxxxxxxxxxx
| < Previous | Next > |