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
System() Funktionen zu nutzen ist sehr unsauberer Programmierstil. Normalerweise gibt es spezielle Bibliotheken mit welchen du solche Funktionen realisieren kannst (dev...).
Habe schon länger nicht mehr mit dem Raspberry Pi (?) gearbeitet. Ich würde einfach mal: Programmiersprache + gpio read in Google eingeben.
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.
Mit diesen Funktionen: http://linux.die.net/man/3/exec http://linux.die.net/man/3/fork http://linux.die.net/man/3/waitpid
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.
ggf. sucht der OP auch soetwas wie popen(), falls es sich um mehr als einen return code handelt.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.