Maison >développement back-end >C++ >Comment puis-je faire la distinction entre une entrée de terminal et une entrée de tuyau en C/C ?

Comment puis-je faire la distinction entre une entrée de terminal et une entrée de tuyau en C/C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-10 16:35:14174parcourir

How Can I Distinguish Between Terminal and Pipe Input in C/C  ?

Identification du type d'entrée standard : Terminal vs Pipe en C/C

Dans le shell interactif Python, l'exécution de "python" sans arguments est lancée l'interface REPL. Cependant, exécuter "cat | python" via le terminal contourne le mode interactif, démontrant que Python détecte stdin (entrée standard) comme un tube. Comment une distinction similaire peut-elle être faite en C/C ou Qt ?

Solution : Utiliser isatty()

Pour détecter si l'entrée standard est connectée à un terminal ou à un pipe en C/C , utilisez la fonction isatty():

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

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

Sur les plateformes Windows, les noms de fonctions sont préfixés par souligne :

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

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