C – von der Ncurses-Benutzeroberfläche zum externen Programm und zurück
-
16-09-2020 - |
Frage
Ich erstelle ein Programm, das einige Informationen in ncurses anzeigt und dann vim öffnet (mit system
), um dem Benutzer das Bearbeiten einer Datei zu ermöglichen.Nachdem vim beendet wurde, wird der Ncurses-Bildschirm jedoch nicht neu gezeichnet. refresh
Und wrefresh
nichts tun, was dazu führt, dass meine schöne Speisekarte komplett zerstört wird.
Also werde ich zur Befehlszeile zurückgeschickt.Die Menüelemente werden neu dargestellt, wenn ich zu ihnen gehe.Wenn man sich ein wenig bewegt, erhält man etwas, das so aussieht:
Wie Sie sehen können, befinde ich mich nicht mehr in meiner hübschen Ncurses-Umgebung.
Ich könnte ncurses komplett abreißen und alles neu einrichten, aber dann bleiben einige Dinge (wie die Menüposition) nicht erhalten.
Wie mache ich das richtig?Gibt es eine bessere Möglichkeit, ein externes Programm aufzurufen und ordnungsgemäß hierher zurückzukehren?
Lösung
Ich musste Flüche noch nie ganz neu starten.
Was ist, wenn Sie so etwas tun?
Systemaufruf ausführen
undfresh() sollte es wiederherstellen
Andere Tipps
Trennen Sie Ihren Programmstatus vom Fluchstatus.
Der einzig saubere Weg, den ich kenne, besteht darin, Flüche vollständig zu stoppen und wieder neu zu starten.Wenn Ihr Programm eine klare Vorstellung von seinem internen Zustand hat (wie es sollte), sollte es einfach sein, zur gleichen Position zurückzukehren.
Viel Glück!