当主应用程序使用 F# 退出时重定向标准输出

发布于 2024-11-15 11:56:55 字数 521 浏览 4 评论 0原文

假设有以下代码:

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:我想对标准错误输出做类似的事情

Assume the following code:

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()

I create a process and exit the main application. The process is still running (as it should) but it stops redirecting the standard output. Is there any way how to continue writing the standard output to the file even after the main application exits?

PS: I have to exit the main application and cannot wait for the process to finish
PPS: I would like to do a similar thing for the standard error output

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

扎心 2024-11-22 11:56:55

我认为如果 RedirectStandardOutput 为 false,德斯科的答案可能会起作用。进程退出后,输出不会写入文件,因为 OutputDataReceived 事件处理程序不再存在。如果可能,我建议将输出文件路径传递给您的程序(假设没有路径意味着写入标准输出)。有了这个,你就可以很容易地做你想做的事情了。

I think desco's answer may work if RedirectStandardOutput is false. The output isn't being written to the file after your process exits because the OutputDataReceived event handler no longer exists. If possible, I'd recommend passing the output file path to your program (assume no path means write to stdout). With that in place it should be easy to do what you're trying to do.

一指流沙 2024-11-22 11:56:55

您可以通过使用正确的命令行启动进程来执行重定向: 在 dos 中将 stdout 和 stderr 重定向到单个文件

can you perform redirect by starting process with proper command line: Redirect stdout and stderr to a single file in dos?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文