我想知道是否可以读取输入流/写入几个启动进程的输出流。
我问这个问题是因为从我目前对读取/写入启动进程如何工作的(弱)理解来看,它肯定会将输入/输出流附加到我的程序的控制台输入/输出流。
事实果真如此吗?如果是这种情况,那么将不同的数据读取/写入多个启动的命令行将被证明是复杂的,如果不是不可能的话,无法实现。
我的理解正确吗?如何处理几个启动的命令行?
一些代码:
open System
open System.IO
open System.Diagnostics
open System.Threading
[<EntryPoint>]
let main argv =
let startInfo = ProcessStartInfo()
startInfo.FileName <- "cmd.exe"
startInfo.UseShellExecute <- false
startInfo.RedirectStandardInput <- true
startInfo.RedirectStandardOutput <- true
let proc = Process.Start(startInfo)
proc.StandardInput.WriteLine("svn log")
Console.ReadKey() |> ignore
0
此代码将按原样打印
svn: E155007: 'C:xyzbinDebug' is not a working copy
" 它肯定看起来像是将输入/输出流附加到我的 程序的控制台输入/输出流。
不对。 您可以告诉该过程通过 myProcess.StartInfo.RedirectStandardInput
重定向 stdin。 Process
对象公开了获取输入/输出流的方法(例如 Process.StandardInput
) 来读/写它们。
MSDN有一些不错的示例代码:
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardinput%28v=vs.110%29.aspx