假设以下代码:
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:我想为标准错误输出做类似的事情
答案 0 :(得分:1)
我认为如果RedirectStandardOutput
为假,desco的答案可能会有效。在进程退出后,输出未写入文件,因为OutputDataReceived
事件处理程序不再存在。如果可能的话,我建议将输出文件路径传递给你的程序(假设没有路径意味着写入stdout)。有了它,你应该很容易做你想做的事。
答案 1 :(得分:0)
是否可以通过使用正确的命令行启动进程来执行重定向:Redirect stdout and stderr to a single file in dos?