Maison >développement back-end >C++ >Comment puis-je détecter si stdin est un terminal ou un tube en C, C et Qt ?
Détection du type stdin en C, C et Qt
Lors de l'exécution de "python" sans arguments dans un terminal, le shell interactif Python est lancé. Cependant, lorsque "cat | python" est exécuté depuis le terminal, le mode interactif n'est pas activé, indiquant que stdin est connecté à un tube. Cet article explique comment détecter le type stdin en C, C et Qt à l'aide de la fonction isatty.
Présentation de la fonction
La fonction isatty dans stdio.h détermine si un le descripteur de fichier est connecté à un terminal. Lorsqu'il est appliqué à fileno(stdin), il vérifie si stdin est un terminal (par exemple, une console ou un émulateur de terminal) ou non (par exemple, un fichier ou un tube).
Exemple C/C
En C ou C, utilisez le code suivant pour détecter stdin tapez :
#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; }
Exemple Qt
Qt fournit une classe KStdin qui hérite de QIODevice. Il dispose d'une méthode isTerminal() qui peut être utilisée pour vérifier si stdin est connecté à un terminal :
#include <QStdin> int main() { KStdin stdinDevice; if (stdinDevice.isTerminal()) qDebug() << "stdin is a terminal"; else qDebug() << "stdin is a file or a pipe"; return 0; }
En utilisant isatty en C ou C ou KStdin dans Qt, il est possible de détecter si stdin est connecté à un terminal ou à un tuyau, fournissant des informations précieuses pour contrôler le comportement du programme en fonction de la source d'entrée.
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!