Comment utiliser select() pour lire l'entrée à partir du clavier en C

Je suis en train d'utiliser select() pour lire les entrées au clavier et je me suis coincé car je ne sais pas comment faire pour lire à partir d'un clavier et d'utiliser un descripteur de fichier pour le faire. J'ai été dit d'utiliser l'entrée standard STDIN et STDIN_FILENO à l'approche de ce problème, mais je suis encore confus.

Comment puis-je le faire?

C'est assez difficile à faire si vous n'êtes pas familier avec POSIX programmation en général. Pour une chose, vous devez définir le terminal modes de l'appareil n'a pas de tampon de caractères reçus.
Pas besoin d'utiliser select( ), sauf s'il fait partie d'un devoir à la maison. Vous pouvez simplement fread( STDIN ... ) ou lire( STDIN_FILENO ... ).
Si vous avez besoin d'un terminal de contrôle (clé de presses, etc.), vous aurez plus de chances être bien mieux à l'aide d'un terminal de la bibliothèque comme ncurses (il y a des Fenêtres ports, trop).
Pete Wilson: fread(stdin ...) ne fait pas revenir le plus rapidement sélectionner, si un message arrive sur un support avant que l'utilisateur appuie sur une touche. Dans Linux, j'ai utilisé sélectionner. Sous Windows, c'est plus difficile.
Pouvez-vous préciser pourquoi vous devez aller pour sélectionnez pour lire une entrée de clavier ? Normalement, sélectionnez appels doit être utilisé lorsque vous avez besoin pour lire à partir d'une série de descripteurs ou des intrants car elle permettent à un programme de surveillance de plusieurs descripteurs de fichier, en attente jusqu'à ce que l'un ou plusieurs des descripteurs de fichiers devenir "prêts" pour une certaine classe de l'opération d'e/S (p. ex., entrée possible).

OriginalL'auteur drum | 2011-06-20