栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何检测Console.In(stdin)是否已重定向?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何检测Console.In(stdin)是否已重定向?

您可以通过调用Windows FileType()API函数来查找。这是一个帮助器类:

using System;using System.Runtime.InteropServices;public static class ConsoleEx {    public static bool IsOutputRedirected {        get { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdout)); }    }    public static bool IsInputRedirected {        get { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); }    }    public static bool IsErrorRedirected {        get { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stderr)); }    }    // P/Invoke:    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);}

用法:

bool inputRedirected = ConsoleEx.IsInputRedirected;

更新:这些方法已添加到.NET 4.5中的Console类中。没有署名,我可能会添加:(只需使用相应的方法而不是此帮助器类。

https://msdn.microsoft.com/zh-
CN/library/system.console.isoutputredirected.aspx



https://msdn.microsoft.com/en-
us/library/system.console.isinputredirected.aspx
https://
msdn.microsoft.com/zh-
CN/library/system.console.iserrorredirected.aspx



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416850.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号