Konsole in C++ nachladen

gerdchen03

Grünschnabel
Ich arbeite gerade daran ein Menü für ein OpenSource Navi weiterzuentwickeln. Hier ist der Link zum Code: XCSoar/OpenVarioMenu.cpp at master · XCSoar/XCSoar

Wenn man in dem Menü auf Shell klickt, soll das Menü geschlossen werden und eine Konsole soll geöffnet werden, so dass das System auch in der Konsole administriert werden kann. Ab Zeile 416 stehen die Befehle, um die Konsole zu öffnen. Klickt man zu ersten mal auf Shell, schließt sich das Menü und es öffnet sich ein schwarzer Bildschirm. Man muss dann exit eingeben, ohne dass es auf dem Bildschirm angezeigt wird. Dann öffnet sich das Menü wieder. Klickt man erneut auf Shell, schließt sich das Menü und die Konsole geht auf. Allerdings mit viel alter Ausgabe, die auf dem Bildschirm angezeigt wird. Ich wäre sehr dankbar, wenn jemand einen hilfreichen Tip hätte.

Alternativ habe ich mir überlegt, dass sich beim Klicken auf Shell ein ganz normales Menüfenster öffnet. Links gibt es den Button Close, rechts ein Fenster in dem sich die Konsole öffnet. Mit Tab könnte man zwischen Fenster und Close wechseln. Ist man im Fenster reagiert nur die Konsole auf die Tatstatur. Aber wahrscheinlich ist das in der Umsetzung noch mal um Längen komplizierter.
 
Ich denke, ich kann nun etwas detailliertere Infos liefern. Gersten habe ich mit einem Freund zusammen einiges getestet.

Ich denke, das Problem gliedert sich in zwei Bereiche.
1. Blackscreen beim ersten Starten der Shell
Es scheint so, als würde execl("/bin/sh", "-sh", nullptr); nicht dazu führen, dass die GUI korrekt beendet wird. Warum das später nicht mehr der Fall ist, erschließt sich uns nicht. Zudem nimmt die Shell die Befehle, die man eintippt, aber nicht sieht, an. Man findet sie später in der History.

2. Der Buchstabensalat
Dies sind definitiv Ausgaben der GUI, die auf dem Bildschirm landen. Man sieht da zum Beispiel, dass die Pfeiltasten beim Navigieren durch das Menü gedrückt würden. Das Menü verschwindet, die Shell ist offensichtlich noch nicht korrekt gestartet und irgendwelche Ausgaben erscheinen auf dem Bildschirm. Geht man mit exit aus der Shell, kommt das gleiche wieder, bevor das Menü fertig gestartet ist.
image0.jpeg
 
Zurück