Erkennen von stdin-Typen in C, C und Qt
Beim Ausführen von „Python“ ohne Argumente in einem Terminal ist dies die interaktive Python-Shell gestartet. Wenn jedoch „cat | python“ vom Terminal aus ausgeführt wird, ist der interaktive Modus nicht aktiviert, was darauf hinweist, dass stdin mit einer Pipe verbunden ist. In diesem Artikel wird erläutert, wie Sie mithilfe der isatty-Funktion den stdin-Typ in C, C und Qt erkennen.
Funktionsübersicht
Die isatty-Funktion in stdio.h bestimmt, ob a Der Dateideskriptor ist mit einem Terminal verbunden. Bei Anwendung auf fileno(stdin) prüft es, ob stdin ein Terminal ist (z. B. eine Konsole oder ein Terminalemulator) oder nicht (z. B. eine Datei oder Pipe).
C/C-Beispiel
Verwenden Sie in C oder C den folgenden Code, um stdin zu erkennen Typ:
#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; }
Qt-Beispiel
Qt stellt eine KStdin-Klasse bereit, die von QIODevice erbt. Es verfügt über eine isTerminal()-Methode, mit der überprüft werden kann, ob stdin mit einem Terminal verbunden ist:
#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; }
Durch die Verwendung von isatty in C oder C oder KStdin in Qt ist es möglich zu erkennen, ob stdin mit einem Terminal verbunden ist Wird mit einem Terminal oder einer Pipe verbunden und liefert wertvolle Informationen zur Steuerung des Programmverhaltens basierend auf der Eingabequelle.
Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob stdin ein Terminal oder eine Pipe in C, C und Qt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!