gpt4 book ai didi

f# - FSI 和 F# 中的外部程序启动和输出重定向

转载 作者:行者123 更新时间:2023-12-05 06:47:15 26 4
gpt4 key购买 nike

我有以下代码:

let p = new System.Diagnostics.Process();
printfn "installing %A" "installing"
p.StartInfo.FileName <- "powershell.exe";
p.StartInfo.Arguments <- ("/c notepad.exe")
p.StartInfo.RedirectStandardOutput <- true
p.StartInfo.UseShellExecute <- false
p.Start()
printfn "result ?"
printfn "result %A" (p.StandardOutput.ReadToEnd())
printfn "done"

奇怪的是,在打印结果之前,它会等待我在 FSI 窗口中按下 Enter。

这可能是一件小事,但我怎样才能消除这种行为?

我在 MSDN 上找不到这个。

最佳答案

我在 VS 中的 F# Interactive(突出显示代码并按 Alt+Enter)或使用“fsi Script.fsx”(Visual Studio 2013/.NET 4.5.1)从 shell 中运行时都没有看到这种行为).

我确实必须将“-executionpolicy remotesigned”添加到开关以避免异常(即使在普通的 PS shell 中,它已经设置),但如果您没有 PowerShell 配置文件,这可能不会发生你。

我看到的是:

(Notepad opens)
installing "installing"
result ?
(I close notepad)
result ""
done

我正在使用 fsi Script.fsx 运行以下代码。我在 PowerShell 窗口和普通的 CMD 提示符下都尝试过。

let p = new System.Diagnostics.Process();
printfn "installing %A" "installing"
p.StartInfo.FileName <- "powershell.exe";
p.StartInfo.Arguments <- ("-executionpolicy remotesigned /c notepad.exe")
p.StartInfo.RedirectStandardOutput <- true
p.StartInfo.UseShellExecute <- false
p.Start()
printfn "result ?"
printfn "result %A" (p.StandardOutput.ReadToEnd())
printfn "done"

关于f# - FSI 和 F# 中的外部程序启动和输出重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com