golang 使用编译选项-H=windowsgui后,仍然输出log到console
Posted sherlock-merlin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 使用编译选项-H=windowsgui后,仍然输出log到console相关的知识,希望对你有一定的参考价值。
大概原理:
调用syscall创建一个console,获取其handle,重定向标准输出stdout到该console。
if debug modkernel32 := syscall.NewLazyDLL("kernel32.dll") procAllocConsole := modkernel32.NewProc("AllocConsole") r0, _, err0 := syscall.Syscall(procAllocConsole.Addr(), 0, 0, 0, 0) if r0 == 0 fmt.Printf("Could not allocate console: %s. Check build flags..", err0) os.Exit(1) hout, err1 := syscall.GetStdHandle(syscall.STD_OUTPUT_HANDLE) if err1 != nil os.Exit(2) os.Stdout = os.NewFile(uintptr(hout), "/dev/stdout")
参考链接: stackoverflow.com
以上是关于golang 使用编译选项-H=windowsgui后,仍然输出log到console的主要内容,如果未能解决你的问题,请参考以下文章