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
Libérer: 2024-12-10 16:35:14
original
226 Les gens l'ont consulté

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");
}
Copier après la connexion

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");
}
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!

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