Go 运行linux命令并kill掉

2023-03-15  本文已影响0人  Robin92

下方代码会执行 sngrep 抓包 1分钟,最后将其 kill -9.

package main

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

func main() {
    cmd := exec.Command("sngrep", "-c", "-N", "-q", "-O", "file.pcap")
    cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
    err := cmd.Start()
    if err != nil {
        fmt.Println("err:", err)
        return
    }
    fmt.Println("run pid ", cmd.Process.Pid)
    defer func() {
        if err = syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL); err != nil {
            fmt.Println(fmt.Printf("Kill sngrep (%d) failed with err %s", cmd.Process.Pid, err.Error()))
        }
        cmd.Wait()
    }()

    time.Sleep(1 * time.Minute)
}

上一篇 下一篇

猜你喜欢

热点阅读