读取/写入多个启动的进程命令行



我想知道是否可以读取输入流/写入几个启动进程的输出流。

问这个问题是因为从我目前对读取/写入启动进程如何工作的(弱)理解来看,它肯定会将输入/输出流附加到我的程序的控制台输入/输出流。

事实果真如此吗?如果是这种情况,那么将不同的数据读取/写入多个启动的命令行将被证明是复杂的,如果不是不可能的话,无法实现。

我的理解正确吗?如何处理几个启动的命令行?


一些代码:

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

最新更新