我有一个有趣的任务:编写一个程序来捕获来自名为Redmon的程序的输入。它基本上是一个将输出重定向到程序的虚拟打印机。
我安装了 Redmon 并创建了一个 winforms 应用程序来捕获输出。但我被困在这里。我检查了我的程序收到了什么,它在参数级别上什么都没有(主参数上的字符串 [] 是空的)。
Redmon 启动我的程序,但随后它停止了。我想我应该以某种方式阅读它发送给程序的内容,但是如何?
我假设 Redmon 流到标准输入 - 在这种情况下,您必须从输入流中读取 - 通过 Console.In(如果它是基于字符的)或 Console.OpenStandardInput(用于原始二进制流访问)。
作为从 stdin 读取的内容的一个简单示例(它读取文本行,每行反转):
static void Main() {
WriteReversedLines(Console.In);
}
static void WriteReversedLines(TextReader reader) {
string line;
while ((line = reader.ReadLine()) != null) {
char[] chars = line.ToCharArray();
Array.Reverse(chars);
Console.WriteLine(chars);
}
}
显然,您需要稍微不同地处理二进制数据,但在概念上它是相似的。