ich wollte mir zum üben mit gtkmm ein kleines programm schreiben,
welches per android-sdk veränderungen am dateisystem meines android
handys vornimmt.
die android-sdk stellt dafür ein programm namens "adb shell" zur
verfügung. dieses baut eine shell verbindung zum telefon auf und von
dort aus kann man dann shell befehle absetzen die auf dem telefon
ausgeführt werden.
soweit der manuelle weg. nun dachte ich, mit der system() funktion
könnte ich diese befehle auch aus einem c++ programm ausführen. doch das
geht nicht.
system("cd /home/andre/android/tools;./adb\\ shell");
meldet sh: ./adb shell: not found
jemand eine idee woran das liegen kann? kann es damit zusammen hängen
das das android-sdk programm adb heisst und nur als parameter shell
erwartet?
es liegt definitiv an dem parameter shell. die obere codezeile nur mit ./adb gibt den hilfetext von adb aus. wie bekomme ich nun den parameter an den system aufruf angehängt?
Das \\ gehört da sicher nicht hin, damit sagst du ihm das das kein Trennzeichen ist sondern zum Befehl gehört. Im Zweifel würd' ich nen sh datei machen
leider kann ich jetzt nicht mit der shell interagieren. jeder weitere befehl wird ignoriert.
gibts keine möglichkeit den standard output jetzt in die geöffnete shell umzuleiten?
Probier's mal so:
system("cd /home/andre/android/tools;./adb\ shell");
Es liest sich so, also ob das Programm adb shell heißt.
die shell verbindung lässt sich mitlerweile herstellen
system("cd /home/andre/android/tools;./adb shell"); tut was es soll. nur
danach sind keine weiteren eingaben in diese shell möglich. auch das
programm sagt erst wieder was, wenn ich die shell über exit manuell
verlasse
ich müsste also jetzt den standard output in diese shell umleiten damit
ich die von mir gewünschten befehle absetzen und am ende über exit alles
wieder schließen kann.
Bei C++ kann ich dir da nicht helfen, unter Java würde man das über eine Processbuilder regeln. Mit dem system Ding setzt du einen Befehl ab... danach ist Schluss. Also müßtest du mal schauen wie man unter C++ einen Prozess startet und die Input/Outputstreams steuert...
http://lsw.ee.hm.edu/~thomas/Vorlesung/VBS/inhalt_vbs_frames.html Schau dir mal das Beispiel auf Seite A36 im Kapitel 10 an. Hier werden STD IN und OUT umgeleitet und ein anderes Programm gestartet.
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.