Heim >Backend-Entwicklung >C++ >Wie emuliere ich die Funktionalität „kbhit()' und „getch()' unter Linux?
Emulieren der kbhit()- und getch()-Funktionalität unter Linux
Die kbhit()- und getch()-Funktionen werden häufig in Windows verwendet, um Überprüfen Sie die Eingabe, ohne die Ausführung einer Schleife zu unterbrechen. Allerdings werden diese Funktionen auf Linux-Betriebssystemen nicht nativ unterstützt.
Das kbhit()-Äquivalent
Um eine ähnliche Funktionalität unter Linux zu erreichen, können Sie die Implementierung von Morgan Mattews nutzen die Funktion kbhit(). Diese Implementierung ist mit POSIX-kompatiblen Systemen kompatibel und kann hier gefunden werden.
Das getch()-Äquivalent
Da kbhit() die Pufferung auf Termios-Ebene deaktiviert, ist es Behebt auch das getchar()-Problem. Sie können getchar() unverändert verwenden, ohne die Pufferung zu deaktivieren, wie im bereitgestellten Windows-Beispiel.
Kombination beider Funktionen
Sobald Sie die kbhit()-Funktionalität implementiert haben, Sie können das Windows-Beispiel wie folgt an Linux anpassen:
<code class="C++">#include <unistd.h> #include <iostream> int main() { while (true) { if (kbhit()) { int key = getch(); if (key == 'g') { std::cout << "You pressed G" << std::endl; } } usleep(500000); std::cout << "Running" << std::endl; } }</code>
Das obige ist der detaillierte Inhalt vonWie emuliere ich die Funktionalität „kbhit()' und „getch()' unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!