如何写入另一个应用程序的标准输入?

时间:2010-04-10 11:16:33

标签: c# .net c#-2.0

我有一个读取进程StandardError的模块。一切都很好,但我想做一些不同的事情。我不知道如何像本机方式重定向stdin:

app1.exe -someargs | app2.exe -someargs

app2在其标准输入中读取app1的所有标准输出。

3 个答案:

答案 0 :(得分:8)

一旦你有Process对象代表你要与之通信的进程(因为你是使用静态方法Process.GetProcesses从操作系统获得它,或者是因为你自己创建了它),你可以将StreamWriter附加到Process.StandardInput属性并使用该属性写入进程的标准输入。不要忘记将新创建的流程上的ProcessStartInfo.RedirectStandardInput设置为true

在相关说明中,您可以使用StreamReader上的Process.StandardOutput来阅读输出(例如从StandardError读取)。

答案 1 :(得分:3)

查看以下MSDN参考文档(两者都可以在System.Diagnostics命名空间中找到):

就您的具体示例而言,以下是您的设置方式:

  1. app1 使用Process类作为子进程启动 app2 (请参阅上面的链接)。

  2. app1 通过写入与.StandardInput对象的Process流来写入 app2 的标准输入> APP2

  3. app2 只是从标准输入中读取行(例如,通过Console.ReadLine())。

答案 2 :(得分:0)

我不得不使用BinaryWriter,这篇文章解释了所有: BinaryWriter and StdIn