Да, это правильно. - это буфер, в котором хранятся выходные данные процесса, обычно от 1 до 4 КБ в распространенных реализациях CRT. Одна небольшая деталь: этот буфер находится в процессе, который вы запускаете, а не в программе .NET.
Ничего особенного не должно произойти, когда вы перенаправляете файл, CRT записывает его напрямую. Но если вы перенаправляете в свою .NET-программу, то вывод из буфера идет в канал. Который затем переводит поток в вашу программу, чтобы вы могли очистить канал. Вперед хорошо 700 раз.
Да, не быстро. Хотя это легко исправить, вызовите setvbuf () в программе, которую вы запускаете, чтобы увеличить размеры выходного буфера stdout и stderr. Опять же, это требует наличия исходного кода этой программы.
Предвидя проблему с этим: возможно, вам следует использовать cmd.exe / c для перенаправления в файл, а затем прочитать файл.