Heim > Artikel > Backend-Entwicklung > Wie funktioniert EOF mit Standard Input Stream (stdin) und wie kann es manuell eingeführt werden?
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:
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!