Maison > développement back-end > C++ > L'entrée de la console est-elle redirigée ?

L'entrée de la console est-elle redirigée ?

Susan Sarandon
Libérer: 2025-01-12 17:16:45
original
118 Les gens l'ont consulté

Is Console Input Redirected?

Détection de la redirection des entrées de la console

De nombreuses applications console doivent adapter leur comportement selon que la saisie provient du clavier ou d'un fichier. Cet article montre comment distinguer de manière fiable ces sources d'entrée.

Méthode 1 : Utilisation de l'API Windows FileType() (P/Invoke)

Une solution robuste consiste à exploiter la fonction API Windows FileType() via P/Invoke. Cette classe d'assistance C# simplifie le processus :

<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>
Copier après la connexion

Mise en œuvre :

Vérifiez la redirection des entrées à l'aide de la classe ConsoleEx :

<code class="language-csharp">bool isInputRedirected = ConsoleEx.IsInputRedirected;</code>
Copier après la connexion

Méthode 2 : .NET 4.5 et versions ultérieures

.NET 4.5 et versions ultérieures fournissent des méthodes intégrées au sein de la classe Console. Pour les applications plus récentes, voici l’approche privilégiée :

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

Ceux-ci offrent un moyen plus simple et plus direct de déterminer le statut de redirection. Choisissez la méthode qui convient le mieux à votre version du framework .NET.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal