使用F#退出主应用程序时的RedirectStandardOutput

时间:2011-06-14 12:30:49

标签: f# process redirectstandardoutput

假设以下代码:

let sw = new StreamWriter("out.txt", false)
sw.AutoFlush <- true

let proc = new Process()
proc.StartInfo.FileName <- path
proc.StartInfo.RedirectStandardOutput <- true
proc.StartInfo.UseShellExecute <- false
proc.OutputDataReceived.Add(fun b -> sw.WriteLine b.Data )
proc.Start() |> ignore
proc.BeginOutputReadLine()

我创建一个进程并退出主应用程序。该过程仍在运行(应该如此),但它会停止重定向标准输出。有没有办法在主应用程序退出后如何继续将标准输出写入文件?

PS:我必须退出主应用程序,不能等待该过程完成
PPS:我想为标准错误输出做类似的事情

2 个答案:

答案 0 :(得分:1)

我认为如果RedirectStandardOutput为假,desco的答案可能会有效。在进程退出后,输出未写入文件,因为OutputDataReceived事件处理程序不再存在。如果可能的话,我建议将输出文件路径传递给你的程序(假设没有路径意味着写入stdout)。有了它,你应该很容易做你想做的事。

答案 1 :(得分:0)

是否可以通过使用正确的命令行启动进程来执行重定向:Redirect stdout and stderr to a single file in dos