Maison > développement back-end > C++ > Comment émuler les fonctionnalités `kbhit()` et `getch()` sous Linux ?

Comment émuler les fonctionnalités `kbhit()` et `getch()` sous Linux ?

Susan Sarandon
Libérer: 2024-10-31 03:45:01
original
340 Les gens l'ont consulté

How to Emulate `kbhit()` and `getch()` Functionality on 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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal