我想知道是否可以读取输入流/写入几个已启动进程的输出流。
我问这是因为我目前(弱)理解读/写启动过程是如何工作的,它确实看起来像将输入/输出流附加到我的程序的控制台输入/输出流。
确实是这样吗?如果是这种情况,那么读取/写入不同的数据到几个启动的命令行将证明是复杂的,如果不是不可能的话,将无法实现。
我的理解是否正确?如何处理几个启动的命令行?
一些代码:
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:\x\y\z\bin\Debug' is not a working copy
答案 0 :(得分:1)
“它确实看起来像将输入/输出流附加到我的 程序的控制台输入/输出流。“
不正确。您可以告诉进程通过myProcess.StartInfo.RedirectStandardInput
重定向stdin。 Process
对象公开了获取输入/输出流(例如Process.StandardInput
)以读取/写入它们的方法。
MSDN有一些不错的示例代码:
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardinput%28v=vs.110%29.aspx