Forum: PC-Programmierung C system("gpio read 7") wie die Rückgabe auswerten?


von Lars (Gast)


Lesenswert?

Hallo,

ich bin gerade etwas am basteln...Ich habe ein Hauptprogramm das kleine 
Scripe aufruft.

Ich benutze dafür die system() Funktion:

Z.B:
system("gpio read 7");

Aber wie kann ich die Ausgabe des Scriptes auswerten? Die Funktion 
ansich gibt doch nur zurück ob sie erfolgreich war oder??



Lars

von Autor (Gast)


Lesenswert?

System() Funktionen zu nutzen ist sehr unsauberer Programmierstil. 
Normalerweise gibt es spezielle Bibliotheken mit welchen du solche 
Funktionen realisieren kannst (dev...).

von Lars (Gast)


Lesenswert?

Mh ok.

Gibt es da evtl ein Beispiel?

von Autor (Gast)


Lesenswert?

Habe schon länger nicht mehr mit dem Raspberry Pi (?) gearbeitet. Ich 
würde einfach mal:

Programmiersprache + gpio read

in Google eingeben.

von Lars (Gast)


Lesenswert?

Tach ne es geht nicht nur um gpio...Ich will einfach aus meinem 
Hauptprogramm einzelne Scripe aufrufen. Teil ist es Shell und Teil  sind 
kleine Bash Scripte die auch was zurück geben.

von Dr. Sommer (Gast)


Lesenswert?


von Peter II (Gast)


Lesenswert?

verstehe das Problem nicht. System gibt doch den returncode von dem 
ausgeführten Programm zurück was brauchst du noch?

http://www.cplusplus.com/reference/cstdlib/system/

> If command is not a null pointer, the value returned depends on the
> system and library implementations, but it is generally expected to be
> the status code returned by the called command, if supported.

von Hank P. (hp67)


Lesenswert?

ggf. sucht der OP auch soetwas wie popen(), falls es sich um mehr als 
einen return code handelt.

von Rolf Magnus (Gast)


Lesenswert?

Ja, popen() dürfte die einfachste Variante sein.
Mit fork() und exec() ist es etwas mehr Aufwand und man braucht außerdem 
noch  dup(), dup2() und pipe(). Letztendlich macht popen() es intern 
auch nicht viel anders. Um mal etwas mehr Verständnis für die 
Funktionsweise von Un*x zu bekommen, ist es aber mal ganz interessant, 
es zu Fuß zu machen.

von dasdsdadadad (Gast)


Lesenswert?

wenns nur ums Aufrufen bestimmter Programme geht, so würde ich das als 
Shell Skript realisieren.
Shell Skripte sind der Kleber, der Linux zusammenhält.

Ansonsten würden sich, wie bereits erwähnt, diverse 
Interprozesskommunikationsarten anbieten, wie z.B. Pipes.

Du kannst auf GPIO aber auch direkt zugreifen, die GPIO Treiber 
registrieren sich im /sys/class/gpio Dateisystem. Du brauchst die dort 
liegenden Dateien einfach nur mit open öffnen, mit write Werte 
reinschreiben, und dann einfach wieder close aufrufen.

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.