Heim >Backend-Entwicklung >C++ >Wie kann ich feststellen, ob die Standardeingabe (stdin) ein Terminal oder eine Pipe in C oder C ist?
Terminal- oder Rohrverbindung in C oder C bestimmen
Beim Ausführen eines Programms ist es oft notwendig zu bestimmen, ob die Standardeingabe (stdin ) ist an eine Klemme oder ein Rohr angeschlossen. Diese Unterscheidung ist entscheidend, um die Art der Eingabe zu verstehen, die das Programm empfängt, und um das Verhalten entsprechend anzupassen.
Problemanalyse
Wie beobachtet, verhält sich „Python“ unterschiedlich, je nachdem, ob Der Aufruf erfolgt über ein Terminal oder über eine Pipe. Dies zeigt an, dass das Programm das Vorhandensein oder Fehlen einer Terminalverbindung erkennt.
C- oder C-Erkennungslösung
In C oder C kann die Funktion isatty verwendet werden Bestimmen Sie, ob der angegebene Dateideskriptor auf ein Terminal verweist oder nicht. Es benötigt einen Dateideskriptor als Argument, der normalerweise fileno(stdin) für stdin ist.
Beispielcode
Hier ist ein Beispiel für die Verwendung von isatty in C oder C:
#include <stdio.h> #include <io.h> // For _isatty and _fileno on Windows int main() { if (isatty(fileno(stdin))) { printf("stdin is a terminal\n"); } else { printf("stdin is a file or a pipe\n"); } return 0; }
Unter Windows werden den Funktionen isatty und fileno Unterstriche vorangestellt, sodass die Code wird zu:
#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; }
Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob die Standardeingabe (stdin) ein Terminal oder eine Pipe in C oder C ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!