标准输入和以.NET输出

时间:2010-10-29 21:00:20

标签: c# .net

如何从标准输入读取并写入标准输出。 System.Diagnostics.Process.StandardInput的MSDN引用没有帮助,因为它单独启动进程,然后重定向标准输入/输出但是如果进程已经运行并调用我的应用程序来为它提供一些数据。这是一个让事情变得清晰的例子:

我只是使用Unix管道,即cygwin中的cat命令(类似Linux的环境中的Linux),基本上只读取标准输入并打印到标准输出。以下是命令:

%cat input / sample.txt | SRC / CSHARP / maptest

但这似乎不起作用。

如果有人知道ruby在这里我不知道我想在C#中做同样的事情:

#!/usr/bin/env ruby 

STDIN.each_line 
do |line| 
some code here 
end

这里有一些我希望在c#或vb.net中完成的python等效代码:

#!/usr/bin/env python 

import re 
import sys 

for line in sys.stdin: 
val = line.strip() 

任何解决方案?

提前致谢。

3 个答案:

答案 0 :(得分:9)

您正在寻找Console课程中的static methods

  • System.Console.In封装标准输入流
  • System.Console.Out封装标准输出流

答案 1 :(得分:1)

指向System.IO.Pipes的文档的指针是一个红色的鲱鱼。

如果您只是希望能够将流程管道的标准输出管道连接到另一个流程的标准输入,那么只要编写目标流程以从标准输入读取输入,就可以像预期的那样工作。例如我可以做

dir /b /s c:\*.* | findstr exe

查找我的C:驱动器上的所有可执行文件。

因此,您需要做的就是构建maptest应用程序,使其从标准输入读取,换句话说,它必须通过其他答案中提到的Console.Read*方法接受输入。有关之前的讨论,请参阅此前一个问题

C# Console receive input with pipe

答案 2 :(得分:0)

您无法使用Console.ReadLine()Console.WriteLine()

别介意以上。你试过System.IO.Pipes吗?这是MSDN documentation