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

ble*_*lez 7 .net c# c#-2.0

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

app1.exe -someargs | app2.exe -someargs

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

Dan*_*ker 8

一旦你有了Process表示你要与之通信的进程的对象(或者因为你是使用静态方法从操作系统获得它Process.GetProcesses,或者是因为你自己创建了它),你可以将a附加StreamWriterProcess.StandardInput属性并使用它来写入stdin这个过程.不要忘记将ProcessStartInfo.RedirectStandardInput新创建的进程设置为true.

在一个相关的说明,您可以使用StreamReaderProcess.StandardOutput读取输出(如读取StandardError).


sta*_*ica 3

查看 MSDN 参考文档以了解以下内容(均可在System.Diagnostics命名空间中找到):

对于您的特定示例,设置方法如下:

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

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

  3. app2只是从其标准输入读取行(例如 via Console.ReadLine())。