我創建了兩個簡單的.exe文件。其中一個在運行時接受文件名參數,並將文件的內容讀取到控制檯。另一個等待其控制檯的輸入,然後讀取它;現在只需打印到控制檯,但最終我必須將讀入文本重定向到新的txt文件。我的問題是,如何將第一個exe文件的輸出重定向到第二個exe文件的控制檯,以便讀取它?將一個exe的輸出重定向到另一個exe:C#
預先感謝任何幫助,您可以提供! :)
克里斯
我創建了兩個簡單的.exe文件。其中一個在運行時接受文件名參數,並將文件的內容讀取到控制檯。另一個等待其控制檯的輸入,然後讀取它;現在只需打印到控制檯,但最終我必須將讀入文本重定向到新的txt文件。我的問題是,如何將第一個exe文件的輸出重定向到第二個exe文件的控制檯,以便讀取它?將一個exe的輸出重定向到另一個exe:C#
預先感謝任何幫助,您可以提供! :)
克里斯
你也許可以做一些與使用命令行的管道重定向操作:
ConsoleApp1.exe | ConsoleApp2.exe
管道操作員將控制檯輸出從第一個應用程序重定向到第二個應用程序的標準輸入。你可以找到更多的信息here(該鏈接是XP的,但規則也適用於Windows Vista和Windows 7)。
從MSDN
// Start the child process.
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "Write500Lines.exe";
p.Start();
// Do not wait for the child process to exit before
// reading to the end of its redirected stream.
// p.WaitForExit();
// Read the output stream first and then wait.
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
你可以得到由線路的線路通過,而不是閱讀:
///...
string output;
while((output = p.StandardOutput.ReadLine()) != null)
{
Console.WriteLine(output);
}
p.WaitForExit();
我希望這是實現這一目標的唯一途徑,因爲如果你設計了這個由你自己負責處理2個.NET程序集流重定向使用過程是最糟糕的設計曾經見過。你可以使用命名管道的,插座,WCF ,Web服務甚至數據庫(不希望)。 – Burimi
@Cody:曾經見過的最差設計?你有沒有試過告訴nix用戶?這是他們世界中常見的設計模式。 – spender