2013-03-20 4 views
2

Мне нужно создать простое консольное приложение, которое принимает входной канал. Мы запускаем Windows Server 2012. Данные поступают из другого приложения, которое собирается «подключить» вход к этому приложению. У меня есть понимание труб с точки зрения Linux, но я не понимаю их с точки зрения Windows.Передача аргументов в приложение C#

Мое предположение, что мне нужно отправить вход в моем приложении, как это: C: \ app.exe < test.txt

При использовании «<» характер мое текущее понимание является то, что он преобразует тест .txt к потоку и передаст указатель.

Мой вопрос: может ли кто-нибудь дать мне пример того, как получить указатель потока или что-то, что эквивалентно трубу в окнах моего приложения, чтобы я мог прочитать ввод?

+1

Возможный дубликат [C# Консоль приема ввода с трубой] (http://stackoverflow.com/questions/199528/c-sharp-console-receive-input-with-pipe) –

+0

'<'перенаправление ввода не имеет ничего общего делать с трубами, потоками и указателями. Вам действительно нужно использовать трубы или на самом деле вам нужно что-то еще? Это не ясно из вопроса. – wRAR

+0

@MichaelPerrenoud Я только что нашел этот пост, и да, это работает для обоих, используя трубку '|' и символ ввода файла '<' –

ответ

2

При использовании < и > с приложением стандартные входные и выходные потоки (интерфейс экрана/клавиатуры) заменяются файловым потоком.

Вы можете использовать регулярные Console.Read и Console.ReadLine команды для чтения из потока, указанного в директиве <, или использовать Console.In, которая является TextReader.

Аналогично Console.Write и Console.WriteLine могут быть использованы для записи в выходной поток, указанного в директиве > или Console.Out которая является TextWriter.

Если вы используете директиву |, например myapp.exe | sort, выходной поток первой программы переходит во входной поток следующей программы.