Heim > Backend-Entwicklung > C++ > Wird die Konsoleneingabe umgeleitet?

Wird die Konsoleneingabe umgeleitet?

Susan Sarandon
Freigeben: 2025-01-12 17:16:45
Original
118 Leute haben es durchsucht

Is Console Input Redirected?

Konsoleneingabeumleitung erkennen

Viele Konsolenanwendungen müssen ihr Verhalten anpassen, je nachdem, ob die Eingabe über die Tastatur oder eine Datei erfolgt. Dieser Artikel zeigt, wie Sie diese Eingabequellen zuverlässig unterscheiden können.

Methode 1: Verwendung der Windows FileType() API (P/Invoke)

Eine robuste Lösung besteht darin, die Windows FileType() API-Funktion über P/Invoke zu nutzen. Diese C#-Hilfsklasse vereinfacht den Prozess:

<code class="language-csharp">using System;
using System.Runtime.InteropServices;

public static class ConsoleEx
{
    public static bool IsOutputRedirected => FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdout));
    public static bool IsInputRedirected => FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin));
    public static bool IsErrorRedirected => FileType.Char != GetFileType(GetStdHandle(StdHandle.Stderr));

    // P/Invoke declarations:
    private enum FileType { Unknown, Disk, Char, Pipe };
    private enum StdHandle { Stdin = -10, Stdout = -11, Stderr = -12 };
    [DllImport("kernel32.dll")]
    private static extern FileType GetFileType(IntPtr hdl);
    [DllImport("kernel32.dll")]
    private static extern IntPtr GetStdHandle(StdHandle std);
}</code>
Nach dem Login kopieren

Umsetzung:

Überprüfen Sie die Eingabeumleitung mithilfe der Klasse ConsoleEx:

<code class="language-csharp">bool isInputRedirected = ConsoleEx.IsInputRedirected;</code>
Nach dem Login kopieren

Methode 2: .NET 4.5 und höher

.NET 4.5 und spätere Versionen bieten integrierte Methoden innerhalb der Console-Klasse. Für neuere Anwendungen ist dies der bevorzugte Ansatz:

  • Console.IsOutputRedirected
  • Console.IsInputRedirected
  • Console.IsErrorRedirected

Diese bieten eine einfachere und direktere Möglichkeit, den Weiterleitungsstatus zu bestimmen. Wählen Sie die Methode, die am besten zu Ihrer .NET Framework-Version passt.

Das obige ist der detaillierte Inhalt vonWird die Konsoleneingabe umgeleitet?. 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