在用exec包调用的其他进程后如何关闭结束,可以使用context包的机制进行管理,context包的使用详见:https://godoc.org/context

exec.CommandContextcontextcontext
go build -ldflags="-H windows"

隐藏子进程黑窗口的方法:

cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
package main

import (
    "context"
    "fmt"
    "os"
    "os/exec"
    "syscall"
    "time"
)

func main() {
    ctx, cancel := context.WithCancel(context.Background())
    cmd := exec.CommandContext(ctx, "./b")
    cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
    cmd.Stdout = os.Stdout
    cmd.Start()

    time.Sleep(10 * time.Second)
    fmt.Println("退出程序中...", cmd.Process.Pid)
    cancel()

    cmd.Wait()
}