Forum: PC-Programmierung Exit Code in der shell


von Stefan W. (bier16v)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
hat zufällig wer eine Idee, warum der Aufruf eines Befehls direkt in der 
shell fehlerfrei funktioniert (Exit Code 0), der gleiche Befehl aber in 
einem C-Code mit system() den Rückgabewert -1 liefert?

shell: liefert 0
1
/usr/bin/wget --quiet 192.168.0.40/get_current -O /mnt/ramdisk/current 
2
echo $?
3
0

C-Code: ret = -1
1
ret = system("/usr/bin/wget --quiet 192.168.0.40/get_current -O /mnt/ramdisk/current");

192.168.0.40/get_current liefert 4 Stromwerte, die ein TM4C129 - Board 
von TI berechnet. Das C-Programm sollte mal ein Daemon für den Raspberry 
werden.

Linux raspberrypi3 4.4.13-v7+ #894 SMP Mon Jun 13 13:13:27 BST 2016 
armv7l GNU/Linux

von MaWin (Gast)


Lesenswert?

*  If a child process could not be created, or its status could  not  be
          retrieved, the return value is -1.

von Stefan W. (bier16v)


Lesenswert?

Ok, aber die Datei /mnt/ramdisk/current wird samt richtigen Inhalt 
erstellt wenn ich den kompilierten C-Code ausführe.

von (prx) A. K. (prx)


Lesenswert?

Handles 1 und 2 existieren nicht mehr,
shell/wget erwartet stdout/stderr => peng.

: Bearbeitet durch User
von Stefan W. (bier16v)


Lesenswert?

A. K. schrieb:
> Handles 1 und 2 existieren nicht mehr,
> wget schreibt auf stdout/stderr => peng.

Danke, das hab ich wieder mal nicht geschnallt.

von Dirk D. (dicky_d)


Lesenswert?

Warum willst du für nen http-request wget ausführen?
Mach das doch selbst...

von bier16v (Gast)


Lesenswert?

Ich wollte nur "quick and dirty" was ausprobieren.
Nachdem ich kaum Erfahrungen im programmieren habe, bin ich für alle 
Tipps dankbar, wie ich das einfach umsetzen kann.

Ich werde mich mal mit libcurl befassen. (z.B. 
https://curl.haxx.se/libcurl/c/simple.html )

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.