在用exec包调用的其他进程后如何关闭结束,可以使用context包的机制进行管理,context包的使用详见:https://godoc.org/context
exec.CommandContext
方发实现了context
,通过context
可以对exec启动的进程结束。
隐藏程序自身黑窗口的方法: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()
- }