如何从标准输入中读取并写入标准输出。 System.Diagnostics.Process.StandardInput的MSDN参考无济于事,因为它分别启动进程,然后重定向标准输入/输出,但如果进程已在运行,并调用我的应用程序来为其提供一些数据,该怎么办。这是一个使情况更清楚的示例:

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

%cat input / sample.txt | src / csharp / maptest

但这似乎不起作用。

如果有人因为我不了解红宝石,这就是我想在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()


有什么办法吗?

提前致谢。

最佳答案

System.IO.Pipes文档的指针在这里是红色的鲱鱼。

如果您只希望能够将一个过程的标准输出传递到另一个过程的标准输入,那么如果目标进程被编写为从标准输入中读取输入,则其工作原理与您期望的相同。例如我可以

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


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

因此,您要做的就是构建您的maptest应用程序,以便它从标准输入中读取内容,换句话说,它必须通过Console.Read*方法接受输入,如其他答案中所述。请参阅前面的问题以进行更早的讨论

C# Console receive input with pipe

09-26 13:55