将进程与命令行窗口解耦
在 Go 中,您可以使用 os.StartProcess() 创建子进程。但是,默认情况下,此进程保持与父命令窗口的连接。要解耦进程并在后台运行它,您需要修改其属性。
在您的代码中,您已经设置了 procAttr 结构来重定向子进程的文件描述符。但是,您似乎忽略了隐藏 Windows 系统控制台窗口的必要设置。
要隐藏控制台窗口,请将以下行添加到 procAttr.Sys 成员:
procAttr.Sys.HideWindow = true
但是,您提到这会导致“内存指针错误”错误。这很可能是由于代码中与进程解耦无关的另一个问题造成的。
要在不链接到 Windows GUI 子系统并禁用控制台窗口创建的情况下编译程序,请使用以下命令:
go tool 8l -o output.exe -Hwindowsgui input.8
这将生成一个可执行文件,可以在后台运行,无需控制台窗口。
以上是如何将Go进程与命令行窗口解耦并在Windows中隐藏控制台窗口?的详细内容。更多信息请关注PHP中文网其他相关文章!