2010-04-10 63 views
5

我有一個讀取進程的StandardError的模塊。一切正常,但我想做一些不同的事情。我不知道如何重定向標準輸入,如土辦法:如何寫入另一個應用程序的標準輸入?

app1.exe -someargs | app2.exe -someargs

凡APP2 APP1讀取所有標準輸出在其標準輸入。

+0

這個答案應該給你一個不錯的主意[C#控制檯接收與管道輸入(http://stackoverflow.com/questions/ 199528/c-console-receive-input-with-pipe) – 2010-04-10 11:19:36

+0

但是第二個應用程序不是由我寫的。我需要發送字節到子進程,而不是接收它們。 – blez 2010-04-10 11:23:16

+0

@blez,它應該是非常明顯的。寫作與閱讀相反。如果鏈接的答案告訴您從控制檯讀取,則可以寫入控制檯。 – 2010-04-10 11:34:36

回答

3

看一看,有如下MSDN的參考文檔(包括在System.Diagnostics命名空間中找到):

爲了您的具體的例子,這裏是你如何設置的東西了:

  1. APP1開始APP 2爲使用Process類(見上面的鏈接)一個子進程。

  2. APP1通過寫入與APP2相關聯的Process對象的.StandardInput流寫入到APP2的標準輸入。

  3. app2只是從其標準輸入中讀取行(例如通過Console.ReadLine())。

8

一旦你有一個代表你想(使用,因爲您從OS得到了它的靜態方法Process.GetProcesses,還是因爲你自己創建它),你可以將一個StreamWriterProcess.StandardInput財產進行溝通的過程中Process對象並用它寫入進程的標準輸入。不要忘記在新創建的進程上將ProcessStartInfo.RedirectStandardInput設置爲true

在相關說明中,您可以使用Process.StandardOutput上的StreamReader來讀取輸出(如從StandardError讀取)。