Sé que hay stdout/in/err para un programa y quiero redirigir la salida de un programa a un archivo en lugar de la salida de la consola. Y ahora lo averigüe con el código de abajo:¿Cómo escribir en StdOut Stream de un programa directamente en C#?
FileStream fs = File.Open(@"E:\console.txt", FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fs);
TextWriter old = Console.Out;
Console.SetOut(sw);
Console.Write("bbb");
sw.Flush();
Pero este enfoque es conectar el programa de salida estándar a Console.Out y redirigir la Console.Out al archivo. Es una especie de la siguiente manera:
Program.StdOut -> Console.Out -> Archivo
El Console.Out aquí parece ser un puente. No quiero este puente y no quiero usar Console.Write() para hacer la salida. ¿Cómo podría asignar la secuencia estándar del programa al archivo de destino directamente y escribir en la salida estándar del programa directamente en lugar de Console.Write()? Lo que quiero es algo así como esto:
Program.StdOut -> Archivo
El Process.StandardOutput propiedad sólo me da un objeto de sólo lecturaStreamReader. Cómo escribir en Process.StandardOutput? ¿O dónde está el stdout del programa ?
Muchas gracias.
Gracias, MikeP. Me pregunto por qué dejar que la clase Console reclame el método OpenStandardOutput(), por qué no categorizar este método en la clase Process, creo que sería más razonable. ¿Qué tipo de filosofía de diseño está involucrado? – smwikipedia
No sé por qué eligieron este método. – MikeP