首頁 > 後端開發 > Golang > 如何使用 StartProcess() 在 Windows 中將 Go 進程與其父進程分開?

如何使用 StartProcess() 在 Windows 中將 Go 進程與其父進程分開?

Susan Sarandon
發布: 2024-11-03 19:45:29
原創
815 人瀏覽過

How can I detach a Go process from its parent in Windows using `StartProcess()`?

在Go 中解耦進程

要將使用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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板