Heim  >  Artikel  >  Backend-Entwicklung  >  Wie funktioniert EOF mit Standard Input Stream (stdin) und wie kann es manuell eingeführt werden?

Wie funktioniert EOF mit Standard Input Stream (stdin) und wie kann es manuell eingeführt werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 03:44:02636Durchsuche

How does EOF work with Standard Input Stream (stdin) and how can it be manually introduced?

EOF und Standard Input Stream (stdin)

stdin bezieht sich auf den Standard-Eingabestream, der normalerweise die Eingaben des Benutzers von der Konsole darstellt. Im Gegensatz zu einer Datei verfügt stdin nicht über einen inhärenten End-of-File-Indikator (EOF). Das bedeutet, dass das Lesen von stdin mit Funktionen wie fread oder read auf unbestimmte Zeit fortgesetzt wird, bis irgendeine Form von EOF manuell eingeführt wird.

Um dieses Verhalten zu verstehen, betrachten Sie die folgende Schleife:

while ((c = read(0, buffer, BUFSIZ)) > 0) {
    // Processing logic
}

Dies Die Schleife liest weiterhin Zeichen von stdin, solange die Lesefunktion einen positiven Wert zurückgibt. Ohne einen EOF-Indikator wird die Schleife jedoch nie ein Ende erreichen.

Um einen EOF in stdin einzuführen, kann der Benutzer dieses Flag auf verschiedene Arten simulieren:

  • UNIX-Systeme: Drücken Sie Strg D.
  • Windows-Systeme: Drücken Sie Strg Z.

Nach Eingabe dieses EOF-Befehls verhält sich das Programm so Es war das Ende einer Eingabedatei erreicht. Folglich wird die oben erwähnte Schleife beendet.

Bearbeiten: Klarstellung zum EOF von Stdin

Gemäß der ursprünglichen Frage könnte man sich fragen, ob stdin von Natur aus ein EOF fehlt und ob Es muss manuell mit den EOF-Befehlen eingefügt werden. Die Antwort ist positiv.

stdin kann, wenn es nicht von einer Datei umgeleitet, sondern direkt von der Konsole übernommen wird, als „unendliche“ Datei betrachtet werden, da ihr Ende nicht vorbestimmt ist. Daher muss das Ende dieser „Datei“ vom Benutzer manuell über EOF-Befehle mitgeteilt werden.

Das obige ist der detaillierte Inhalt vonWie funktioniert EOF mit Standard Input Stream (stdin) und wie kann es manuell eingeführt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn