我有一个有趣的任务:编写一个程序,捕获来自程序Redmon的输入。它基本上是一个虚拟打印机,它将输出重定向到程序。
我安装了Redmon并创建了一个winforms应用程序来捕获输出。但我被困在这里。我检查了我的程序收到了什么,它在参数级别上没有任何内容(主args上的字符串[]为空)。
Redmon启动我的程序,但它正在停止。我想我应该以某种方式阅读它发送给程序的内容,但是如何?
答案 0 :(得分:3)
我会假设Redmon流式传输到stdin - 在这种情况下,您必须从输入流中读取 - 通过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);
}
}
显然,您需要稍微区别对待二进制数据,但从概念上讲它是相似的。