如何写入另一个应用程序的标准输入?
问题描述:
我有一个读取进程的StandardError的模块。一切正常,但我想做一些不同的事情。我不知道如何重定向标准输入,如土办法:如何写入另一个应用程序的标准输入?
app1.exe -someargs | app2.exe -someargs
凡APP2 APP1读取所有标准输出在其标准输入。
答
看一看,有如下MSDN的参考文档(包括在System.Diagnostics
命名空间中找到):
ProcessStartInfo.RedirectStandardInput
。
有一个示例显示如何启动子进程并直接写入其标准输入。
为了您的具体的例子,这里是你如何设置的东西了:
APP1开始APP 2为使用
Process
类(见上面的链接)一个子进程。APP1通过写入与APP2相关联的
Process
对象的.StandardInput
流写入到APP2的标准输入。app2只是从其标准输入中读取行(例如通过
Console.ReadLine()
)。
答
一旦你有一个代表你想(使用,因为您从OS得到了它的静态方法Process.GetProcesses
,还是因为你自己创建它),你可以将一个StreamWriter
到Process.StandardInput
财产进行沟通的过程中Process
对象并用它写入进程的标准输入。不要忘记在新创建的进程上将ProcessStartInfo.RedirectStandardInput
设置为true
。
在相关说明中,您可以使用Process.StandardOutput
上的StreamReader
来读取输出(如从StandardError
读取)。
这个答案应该给你一个不错的主意[C#控制台接收与管道输入(http://*.com/questions/ 199528/c-console-receive-input-with-pipe) – 2010-04-10 11:19:36
但是第二个应用程序不是由我写的。我需要发送字节到子进程,而不是接收它们。 – blez 2010-04-10 11:23:16
@blez,它应该是非常明显的。写作与阅读相反。如果链接的答案告诉您从控制台读取,则可以写入控制台。 – 2010-04-10 11:34:36