Maison > développement back-end > C++ > Comment puis-je détecter si stdin est un terminal ou un tube en C, C et Qt ?

Comment puis-je détecter si stdin est un terminal ou un tube en C, C et Qt ?

Linda Hamilton
Libérer: 2024-12-09 14:32:12
original
397 Les gens l'ont consulté

How Can I Detect Whether stdin is a Terminal or a Pipe in C, C  , and 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;
}
Copier après la connexion

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

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!

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