4

I need to build an simple console application that accepts a pipe as input. We are running Windows Server 2012. The data is coming from another application that is going to "pipe" the input to this application. I have an understanding of pipes from a Linux perspective but do not understand them well from a Windows perspective.

My best guess is that I need to send input to my application like this: C:\app.exe < test.txt

When using the '<' character my current understanding is that it converts test.txt to a stream and will pass in a pointer.

My question is, can anyone give me an example of how to receive a stream pointer, or something equivalent to a pipe in windows in my application, so that I can read the input?

Payson Welch
  • 337
  • 3
  • 11

1 Answers1

5

When you use < and > with an application, the standard input and output streams (screen/keyboard interface) is replaced by a file stream.

You can use the regular Console.Read and Console.ReadLine commands to read from the stream specified by the < directive, or use Console.In which is a TextReader.

Similarly Console.Write and Console.WriteLine can be used to write to the output stream specified by the > directive, or Console.Out which is a TextWriter.

If you use the | pipe directive, for example myapp.exe | sort, the output stream of the first program goes into the input stream of the next program.

Guffa
  • 666,277
  • 106
  • 705
  • 986