Simulierte Konsole/Shell
Verfasst: Do Okt 22, 2020 8:23 pm
Dann werde ich auch mal eine Frage stellen in Vorbereitung für ein Problem, was ich in der nächsten Zeit lösen muss und meine Experimente bisher eher von überschaubaren Erfolg waren. Ansonsten bin ich auch für ein offenes Brainstorming zu haben, wie man an solche Probleme herangehen könnte.
Folgendes Problem: Ich möchte ein Shell-Programm aufrufen und dann mit dem Programm kommunizieren.
Wenn ich einen Compiler aufrufe ("gcc hworld.c") liefert der eine Text-Ausgabe und beendet sich dann. Soweit ist das auch halbwegs nachvollziehbar.
Nun möchte ich mit einem interaktiven Shell-Programm kommunizieren können, zum Beispiel "mysql" oder "python". Ich muss also als aufrufender Task solange Ausgaben des gerufenden Programms lesen, bis dieses entweder aufhört zu senden oder eine erwartete Ausgabe kommt.
Wenn ich also python starte, erzählt es mir etwas ...
und wartet dann, bis die drei > kommen, um eine Eingabe zu bringen. Nun möchte ich Befehle absetzen, zum Beispiel
und das Ergebnis herauslesen können.
Und das idealerweise für Posix und Windows.
Mein Problem dabei ist, dass ich nicht gut mitbekomme, wenn der Task nichts mehr sendet. Befehle wie
machen mir hier das Leben schwerer, ich kann also nicht einfach aufhören zu lesen, wenn die gesuchte Zeichenkette da ist.
Hat da jemand schon Erfahrungen gesammelt?
Folgendes Problem: Ich möchte ein Shell-Programm aufrufen und dann mit dem Programm kommunizieren.
Wenn ich einen Compiler aufrufe ("gcc hworld.c") liefert der eine Text-Ausgabe und beendet sich dann. Soweit ist das auch halbwegs nachvollziehbar.
Nun möchte ich mit einem interaktiven Shell-Programm kommunizieren können, zum Beispiel "mysql" oder "python". Ich muss also als aufrufender Task solange Ausgaben des gerufenden Programms lesen, bis dieses entweder aufhört zu senden oder eine erwartete Ausgabe kommt.
Wenn ich also python starte, erzählt es mir etwas ...
Code: Alles auswählen
xin@dualpower:~/xsd/apps/xbuild$ python3
Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Code: Alles auswählen
>>> print (1+2)
3
>>>
Und das idealerweise für Posix und Windows.
Mein Problem dabei ist, dass ich nicht gut mitbekomme, wenn der Task nichts mehr sendet. Befehle wie
Code: Alles auswählen
>>> print (">>>")
>>>
>>>
Hat da jemand schon Erfahrungen gesammelt?