要将使用 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中文网其他相关文章!