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 ?
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!