要將使用StartProcess() 建立的進程與其父進程(在本例中為命令列提示符)分離,可以利用Go 工具鏈提供的-Hwindowsgui 連結器選項。
提供的Go 程式碼嘗試使用StartProcess() 建立解耦進程,設定如下:
<code class="go">var procAttr os.ProcAttr procAttr.Files = []*os.File{nil, nil, nil}</code>
雖然新增procAttr.Sys.HideWindow = true 的目的是隱藏與進程關聯的窗口,但它會導致錯誤“panic”到錯誤的記憶體指標。
正確的解決方案是在編譯 Go 程式時使用 -Hwindowsgui 連結器選項。此選項禁止在執行時為進程建立控制台視窗:
go tool 8l -o output.exe -Hwindowsgui input.8
透過呼叫 -Hwindowsgui 連結器選項,建立的進程沒有控制台窗口,從而有效地將其與命令提示字元解耦。這允許進程在後台獨立於父進程運行。
以上是如何使用 StartProcess() 在 Windows 中將 Go 進程與其父進程分開?的詳細內容。更多資訊請關注PHP中文網其他相關文章!