首页 > 后端开发 > Golang > 正文

如何使用 StartProcess() 在 Windows 中将 Go 进程与其父进程分离?

Susan Sarandon
发布: 2024-11-03 19:45:29
原创
698 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板