2019年8月31日土曜日

golang で pid を指定してプロセスを kill する方法

概要

exec.CommandStart した場合、そのまま Kill を呼べれば良いですが処理が終了する場合は呼べません
そんな場合には pid からプロセスを生成し kill しましょう

環境

  • macOS 10.14.6
  • go 1.12.9

サンプルコード

os.FindProcess(pid) で新規にプロセスを生成できます
あとはこれの Kill() 関数をコールするだけです

package main

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

func main() {
    cmd := exec.Command("sleep", "100")
    err := cmd.Start()
    pid := cmd.Process.Pid
    fmt.Println(pid)
    if err != nil {
        fmt.Println(err)
        return
    }
    process, err := os.FindProcess(pid)
    if err != nil {
        fmt.Println(err)
        return
    }
    err = process.Kill()
    if err != nil {
        fmt.Println(err)
        return
    }
    cmd.Wait()
}

0 件のコメント:

コメントを投稿