美文网首页
golang 的Command启动的进程如何关闭

golang 的Command启动的进程如何关闭

作者: 梅_梅 | 来源:发表于2021-03-10 17:32 被阅读0次

    在用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()
    }
    

    相关文章

      网友评论

          本文标题:golang 的Command启动的进程如何关闭

          本文链接:https://www.haomeiwen.com/subject/rkowqltx.html