PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++/Linux: Reagieren auf keypress


Eggcake
2011-11-25, 17:44:10
Hallo zusammen,

ich muss gerade ein Programm schreiben, das laufend einen Output auf die Konsole schreibt. Nun soll aber der User die ausführung pausieren und etwas auf die konsole schreiben können. Ich finde aber keine funktion, die laufend (ohne das Programm zu unterbrechen) nach einem Keypress (z.B. enter) prüft. Über Google finde ich nur beispiele, wie auf ein keypress gewartet, nicht aber wie darauf reagiert (ohne zu warten) werden kann.

Das Programm soll auf Linux laufen.


Habt ihr hier einen Vorschlag?

Gruss

Nagelbrett
2011-11-25, 18:38:40
Mit select kannst du mit einem kurzen timeout prüfen, ob auf stdin etwas angekommen ist und das ggf. mit read lesen.
Allerdings solltest du dann vorher noch mit tcsetattr/cfmakeraw (termios.h) in den character-by-character terminal mode wechseln, da sonst immer nur bei einem return geflusht wird.

Trap
2011-11-25, 23:34:49
Es gibt im C++ Standard keine Funktion, die das kann. Man kann dafür entweder direkt die Betriebsystem-API nehmen oder man sucht einen Bibliothek, die solche Funktionen anbietet (ncurses wär meine erste Idee).

Eggcake
2011-11-27, 20:16:56
Hm okay, ncurses wäre eine Idee - wie würde es denn damit gehen? Habe auf Anhieb keine entsprechende Funktion gefunden.

Trap
2011-11-27, 23:00:45
getch() sieht passend aus.