Necesita usar Console.Read()
y Console.ReadLine()
como si estuviera leyendo la entrada del usuario. Las tuberías reemplazan la entrada del usuario de forma transparente. No puedes usar ambos fácilmente (aunque estoy seguro de que es bastante posible ...).
Editar:
Un simple programa de cat
estilo:
class Program
{
static void Main(string[] args)
{
string s;
while ((s = Console.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
}
Y cuando se ejecuta, como era de esperar, la salida:
C:\...\ConsoleApplication1\bin\Debug>echo "Foo bar baz" | ConsoleApplication1.exe
"Foo bar baz"
C:\...\ConsoleApplication1\bin\Debug>
Su ejemplo funciona para: echo "Foo bar baz" | ConsoleApplication1.exe | ConsoleApplication1.exe? –
Sí. Usando una analogía de nivel inferior, lo que realmente sucede con una tubería es que la corriente de Stdout de la primera aplicación se conecta a la corriente Stdin de la siguiente aplicación en la tubería. El stdin de la consola se pasa a través de la primera aplicación y se muestra la última solicitud stdout. –
¡Tommorow intentaré eso! Thx :) –