Maison > développement back-end > C++ > Comment puis-je déterminer si l'entrée standard (stdin) est un terminal ou un tuyau en C ou C ?

Comment puis-je déterminer si l'entrée standard (stdin) est un terminal ou un tuyau en C ou C ?

Linda Hamilton
Libérer: 2024-12-05 04:26:10
original
880 Les gens l'ont consulté

How Can I Determine if Standard Input (stdin) is a Terminal or a Pipe in C or C  ?

Détermination d'une connexion de terminal ou de tuyau en C ou C

Lors de l'exécution d'un programme, il est souvent nécessaire de déterminer si l'entrée standard (stdin ) est connecté à un terminal ou à une canalisation. Cette distinction est cruciale pour comprendre le type d'entrée que le programme reçoit et ajuster le comportement en conséquence.

Analyse du problème

Comme observé, "python" se comporte différemment selon que il est appelé depuis un terminal ou via un tube. Ceci indique que le programme détecte la présence ou l'absence d'une connexion de terminal.

Solution de détection C ou C

En C ou C , la fonction isatty peut être utilisée pour déterminer si le descripteur de fichier spécifié fait référence à un terminal ou non. Il prend un descripteur de fichier comme argument, qui est généralement fileno(stdin) pour stdin.

Exemple de code

Voici un exemple d'utilisation d'isatty en C ou C :

#include <stdio.h>
#include <io.h> // For _isatty and _fileno on Windows

int main() {
  if (isatty(fileno(stdin))) {
    printf("stdin is a terminal\n");
  } else {
    printf("stdin is a file or a pipe\n");
  }

  return 0;
}
Copier après la connexion

Sous Windows, les fonctions isatty et fileno sont préfixées par des traits de soulignement, donc le code devient :

#include <stdio.h>
#include <io.h>

int main() {
  if (_isatty(_fileno(stdin))) {
    printf("stdin is a terminal\n");
  } else {
    printf("stdin is a file or a pipe\n");
  }

  return 0;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal