Ich versuche select () zu verwenden, um Tastatureingaben zu lesen, und ich steckte fest darin, dass ich nicht weiß, wie man von der Tastatur liest und einen Dateideskriptor dafür benutzt. Mir wurde gesagt, STDIN und STDIN_FILENO zu benutzen, um dieses Problem anzugehen, aber ich bin immer noch verwirrt.
Wie kann ich es tun?
Ihre Frage klingt ein wenig verwirrt. select()
wird verwendet, um zu blockieren, bis die Eingabe verfügbar ist. Aber Sie tun das eigentliche Lesen mit normalen Datei-Lesefunktionen (wie read
, fread
, fgetc
, usw.).
Hier ist ein kurzes Beispiel. Es blockiert, bis Stdin mindestens ein Zeichen zum Lesen zur Verfügung hat. Aber natürlich, wenn Sie das Terminal nicht in einen ungekochten Modus ändern, blockiert es, bis Sie die Eingabetaste drücken, wenn eingegebene Zeichen in den Dateipuffer (aus einem Terminalpuffer) geleert werden.
%Vor%Vielleicht möchten Sie die Tastatureingabe auf "WINDOWS" sehen? Unter Windows kann das Ergebnis von select () für STDIN nicht abgerufen werden. Sie sollten PeekConsoleInput () verwenden. Und benutze handle of stdin wie folgt.
%Vor%stdin kann zu einer Pipe-Eingabe werden. Wenn ja, erhalten Sie keine Tastatureingabe.
P.S. Wenn Sie nicht nach Windows fragen, entschuldigen Sie viel.
Tags und Links c keyboard textinput stdin select-function