




Process myProcess = new Process();
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("YOUPROGRAM_CONSOLE.exe" );
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardOutput;
string myString = myStreamReader.ReadLine();
Console.WriteLine(myString);
myProcess.Close();
Источник: MSDN
Отредактировано: Если вам нужно получить сообщение об ошибке, вам нужно будет использовать операцию Async. Вы можете использовать асинхронные операции чтения, чтобы избежать этих зависимостей и их потенциальной взаимоблокировки. В качестве альтернативы вы можете избежать состояния взаимоблокировки, создав два потока и прочитав вывод каждого потока в отдельном потоке.
Я добавил некоторую информацию. В MSDN говорится, что требуется несколько потоков, чтобы избежать взаимоблокировки.
Если вы действительно хотите выводить данные на консоль, вы можете использовать Console.SetIn(myProcess.StandardOutput); вместо дополнительного StreamReader-Object.
Вы также захотите включить «RedirectStandardError» и прочитать этот поток, если ваш подпроцесс генерирует сообщения об ошибках.