Identifizieren des Standardeingabetyps: Terminal vs. Pipe in C/C
In der interaktiven Python-Shell wird die Ausführung von „python“ ohne Argumente initiiert die REPL-Schnittstelle. Wenn Sie jedoch „cat | python“ über das Terminal ausführen, wird der interaktive Modus umgangen, was zeigt, dass Python stdin (Standardeingabe) als Pipe erkennt. Wie kann eine ähnliche Unterscheidung in C/C oder Qt getroffen werden?
Lösung: Verwenden Sie isatty()
Um zu erkennen, ob der Standardeingang mit einem Terminal oder einem verbunden ist Pipe in C/C verwenden Sie die Funktion isatty():
#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"); }
Auf Windows-Plattformen wird den Funktionsnamen ein Präfix vorangestellt Unterstriche:
if (_isatty(_fileno(stdin))) { printf("stdin is a terminal\n"); } else { printf("stdin is a file or a pipe\n"); }
Das obige ist der detaillierte Inhalt vonWie kann ich in C/C zwischen Terminal- und Rohreingabe unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!