Vous devez utiliser Console.Read()
et Console.ReadLine()
comme si vous lisiez l'entrée utilisateur. Les tuyaux remplacent l'entrée de l'utilisateur de manière transparente. Vous ne pouvez pas utiliser les deux facilement (même si je suis sûr que c'est tout à fait possible ...).
Edit:
Un simple programme de style cat
:
class Program
{
static void Main(string[] args)
{
string s;
while ((s = Console.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
}
Et lorsqu'il est exécuté, comme prévu, la sortie:
C:\...\ConsoleApplication1\bin\Debug>echo "Foo bar baz" | ConsoleApplication1.exe
"Foo bar baz"
C:\...\ConsoleApplication1\bin\Debug>
Votre exemple fonctionne pour: echo "Foo bar baz" | ConsoleApplication1.exe | ConsoleApplication1.exe? –
Oui. En utilisant une analogie de niveau inférieur, ce qui se passe réellement avec un canal est que le flux Stdout de la première application est branché sur le flux Stdin de l'application suivante dans le pipeline. Le stdin de la console passe à travers la première application, et la dernière application stdout est affichée. –
Tommorow Je vais essayer ça !!! Thx :) –