EOF et flux d'entrée standard (stdin)
stdin fait référence au flux d'entrée standard, qui représente généralement l'entrée de l'utilisateur depuis la console. Contrairement à un fichier, stdin n'a pas d'indicateur de fin de fichier (EOF) inhérent. Cela signifie que la lecture depuis stdin à l'aide de fonctions telles que fread ou read continuera indéfiniment jusqu'à ce qu'une certaine forme d'EOF soit introduite manuellement.
Pour comprendre ce comportement, considérez la boucle suivante :
while ((c = read(0, buffer, BUFSIZ)) > 0) { // Processing logic }
Ceci La boucle continuera à lire les caractères de stdin tant que la fonction de lecture renvoie une valeur positive. Cependant, sans indicateur EOF, la boucle n'atteindra jamais sa fin.
Pour introduire un EOF dans stdin, l'utilisateur peut simuler ce drapeau de différentes manières :
Après avoir entré cette commande EOF, le programme se comportera comme si il avait atteint la fin d'un fichier d'entrée. Par conséquent, la boucle mentionnée ci-dessus se terminera.
Edit : Clarification sur l'EOF de Stdin
Selon la question initiale, on peut se demander si stdin manque intrinsèquement d'EOF et si il doit être inséré manuellement à l'aide des commandes EOF. La réponse est affirmative.
stdin, lorsqu'il n'est pas redirigé depuis un fichier mais plutôt pris directement depuis la console, peut être considéré comme un fichier "infini", car sa fin n'est pas prédéterminée. La fin de ce "fichier" doit donc être communiquée manuellement par l'utilisateur via les commandes EOF.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!