Maison  >  Article  >  développement back-end  >  Comment EOF fonctionne-t-il avec Standard Input Stream (stdin) et comment peut-il être introduit manuellement ?

Comment EOF fonctionne-t-il avec Standard Input Stream (stdin) et comment peut-il être introduit manuellement ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 03:44:02636parcourir

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

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 :

  • Systèmes UNIX : Appuyez sur Ctrl D.
  • Systèmes Windows : Appuyez sur Ctrl Z.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn