C# 标准输入与输出;以.NET为单位的输出

C# 标准输入与输出;以.NET为单位的输出,c#,.net,C#,.net,如何读取标准输入并写入标准输出。System.Diagnostics.Process.StandardInput的MSDN引用没有帮助,因为它单独启动流程,然后重定向标准输入/输出,但如果流程已在运行并调用我的应用程序为其提供一些数据,该怎么办。这里有一个例子可以让事情变得更清楚: 我只是在cygwin(类似Linux的windows环境)中使用Unix管道,即cat命令,它基本上只读取标准输入并打印到标准输出。命令如下: %cat输入/sample.txt | src/csharp/mapte

如何读取标准输入并写入标准输出。System.Diagnostics.Process.StandardInput的MSDN引用没有帮助,因为它单独启动流程,然后重定向标准输入/输出,但如果流程已在运行并调用我的应用程序为其提供一些数据,该怎么办。这里有一个例子可以让事情变得更清楚:

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

%cat输入/sample.txt | src/csharp/maptest

但这似乎不起作用

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

下面是我想在c#或vb.net中完成的一些python等效代码:

#!/usr/bin/env python 

import re 
import sys 

for line in sys.stdin: 
val = line.strip() 
有什么解决办法吗

提前感谢。

您不能使用
Console.ReadLine()
Console.WriteLine()

别管上面的事。你试过System.IO.Pipes吗?这是我的建议

您正在
控制台
类中查找:

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

指向
System.IO.Pipes
文档的指针在这里是一个麻烦

如果您只想让一个流程将其标准输出通过管道传输到另一个流程的标准输入,那么只要将目标流程编写为从标准输入读取输入,那么这与您所期望的效果相同。比如我能做什么

dir /b /s c:\*.* | findstr exe
查找我的C:驱动器上的所有可执行文件

因此,您需要做的就是构建
maptest
应用程序,以便它从标准输入读取数据,换句话说,它必须通过
控制台接受输入。阅读*
方法,如其他答案中所述。有关之前的讨论,请参见上一个问题


我认为他的意思是从应用程序内部启动另一个进程,并访问该进程的标准输入/输出。@Matthew不,这似乎也不起作用,Console.In和Console.Out也是如此。我所需要的只是一种读取标准输入并写入标准输出的方法。很难准确地说出来,但我得到的印象是,他是说他正在创建的程序将从std中获取信息:in@Nelson一些应用程序调用了我的应用程序,然后我的应用程序应该从标准输入读取数据。我需要清洁眼镜。我应该意识到他说的是管道。+1是的,但自从你写这篇文章以来,这些都有点偏离主题了。非常感谢你的帮助史蒂夫,真的很感谢!
dir /b /s c:\*.* | findstr exe