Heim > Backend-Entwicklung > C++ > Wie kann ich feststellen, ob die Standardeingabe (stdin) ein Terminal oder eine Pipe in C/C/Qt ist?

Wie kann ich feststellen, ob die Standardeingabe (stdin) ein Terminal oder eine Pipe in C/C/Qt ist?

Susan Sarandon
Freigeben: 2024-12-09 05:25:16
Original
759 Leute haben es durchsucht

How Can I Determine if Standard Input (stdin) is a Terminal or a Pipe in C/C  /Qt?

Wissen, ob Stdin ein Terminal oder eine Pipe in C/C/Qt ist

In bestimmten Szenarien ist es wichtig, zwischen stdin zu unterscheiden, das mit verbunden ist ein Terminal oder ein Rohr. Wenn Sie beispielsweise Python vom Terminal aus starten, wird sein interaktiver Modus davon beeinflusst, ob stdin ein Terminal oder eine Pipe ist.

Erkennung in C/C

Zur Bestimmung Aufgrund der Art von stdin verwenden Sie die isatty-Funktion:

#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");
}
Nach dem Login kopieren

Verwenden Sie unter Windows die entsprechenden Präfixfunktionen: _isatty, _fileno.

Erkennung in Qt

Qt stellt die Methode QFileDevice::isSequential bereit:

#include <QFileDevice>

if (stdin->isSequential()) {
  // stdin is a pipe
} else {
  // stdin is a terminal
}
Nach dem Login kopieren

Dieser Ansatz nutzt die Tatsache, dass sequentielle Geräte vorhanden sind normalerweise Rohre oder andere nicht suchbare Quellen.

Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob die Standardeingabe (stdin) ein Terminal oder eine Pipe in C/C/Qt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage