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.