How can I read from st开发者_开发知识库andard input and write to standard output. System.Diagnostics.Process.StandardInput's MSDN reference didn't help as it separately starts the process and then redirects the Standard Input/Output but what If the process is already running and called my Application to feed it some data. Here's an example to make things a bit clear:
I am simply using Unix pipes i.e. cat command in cygwin (A Linux like Environment for windows) that basically just reads standard input and print to standard output. following is the command:
% cat input/sample.txt | src/csharp/maptest
But that doesn't seems to work.
If some one know ruby here as i don't here's what i want to do the same in C#:
#!/usr/bin/env ruby
STDIN.each_line
do |line|
some code here
end
And here's some python equivalent code that i want to accomplish in c# or vb.net:
#!/usr/bin/env python
import re
import sys
for line in sys.stdin:
val = line.strip()
Any solutions?
Thanks in advance.
You're looking for the static methods in the Console
class :
System.Console.In
encapsulate the standard input streamSystem.Console.Out
encapsulate the standard output stream
Pointers to documentation for System.IO.Pipes
are a red herring here.
If you just want the ability to have a process pipe its standard output to another process's standard input, then this works the same as you would expect provided the target process is written to read input from standard input. For example I can do
dir /b /s c:\*.* | findstr exe
to find all executable files on my C: drive.
All you need to do therefore is to build your maptest
application so that it reads from standard input, in other words it must accept input via the Console.Read*
methods as mentioned in other answers. See this previous question for an earlier discussion
C# Console receive input with pipe
You can't use Console.ReadLine()
and Console.WriteLine()
?
Never mind the above. Have you tried System.IO.Pipes? Here's the MSDN documentation.
精彩评论