Wie verwenden von select() zu Lesen Eingaben von der Tastatur in C

Ich versuche zu verwenden, wählen Sie() zum Lesen von Tastatureingaben und ich stecken in, ich weiß nicht, wie zu Lesen von der Tastatur und verwenden Sie ein Datei-descriptor zu tun. Ich habe gesagt, die Verwendung von STDIN und STDIN_FILENO zur Lösung dieses Problems, aber ich bin immer noch verwirrt.

Wie kann ich es tun?

  • Dies ist eine ziemlich heikle Sache zu tun, wenn Sie nicht vertraut sind mit POSIX-Programmierung im Allgemeinen. Für eine Sache, die Sie haben, um die terminal-Modus, damit das Gerät nicht Puffer empfangenen Zeichen.
  • Keine Notwendigkeit zu verwenden, wählen Sie( ), es sei denn, natürlich, es ist Teil einer Hausaufgabe. Sie können nur fread( STDIN,...) oder read( STDIN_FILENO ... ).
  • Wenn Sie benötigen die volle terminal-control (Tastendruck, etc.), Sie werden wahrscheinlich besser dran mit einem terminal-Bibliothek, wie ncurses (gibt es Windows-ports, auch).
  • Pete Wilson: fread(stdin,...) nicht zurück so schnell wie wählen Sie, wenn eine Nachricht von einem socket, bevor der Benutzer hat einen Schlüssel. In Linux habe ich verwendet, wählen Sie. In Windows ist es schwieriger.
  • Können Sie bitte erklären, warum würden Sie brauchen, um gehen Sie für wählen Sie zum Lesen eine Tastatur-Eingabe ? Normalerweise wählen Sie Anrufe verwendet werden soll, wenn Sie Lesen müssen, aus einer Reihe von Deskriptoren oder Eingänge es erlauben, ein Programm zur überwachung der mehrere Dateideskriptoren zu warten, bis eine oder mehr der Datei-Deskriptoren werden mit "ready" für einige Klasse-I/O-Vorgang (z.B. Eingang möglich).
InformationsquelleAutor drum | 2011-06-20
Schreibe einen Kommentar