Maison >développement back-end >C++ >Comment émuler les fonctionnalités `kbhit()` et `getch()` sous Linux ?
Émulation des fonctionnalités kbhit() et getch() sous Linux
Les fonctions kbhit() et getch() sont couramment utilisées dans Windows pour vérifier l'entrée sans interrompre l'exécution d'une boucle. Cependant, ces fonctions ne sont pas nativement prises en charge sur les systèmes d'exploitation Linux.
L'équivalent kbhit()
Pour obtenir des fonctionnalités similaires sous Linux, vous pouvez utiliser l'implémentation de Morgan Mattews de la fonction kbhit(). Cette implémentation est compatible avec les systèmes compatibles POSIX et peut être trouvée ici.
L'équivalent getch()
Puisque kbhit() désactive la mise en mémoire tampon au niveau termios, il résout également le problème getchar(). Vous pouvez utiliser getchar() tel quel sans désactiver la mise en mémoire tampon comme dans l'exemple Windows fourni.
Combiner les deux fonctions
Une fois que vous avez implémenté la fonctionnalité kbhit(), vous pouvez adapter l'exemple Windows à Linux comme suit :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!