GOLang-判斷進程是否存在

利用GO打算寫一個進程檢測工具,發現並沒有直接可以獲取進程的信息的方式,後經過查找,決定採用命令的方式進行處理,關鍵代碼如下:
 

    buf := bytes.Buffer{}
    cmd := exec.Command("wmic", "process", "get", "name,executablepath")
    cmd.Stdout = &buf
    cmd.Run()

    cmd2 := exec.Command("findstr", "chrome.exe")
    cmd2.Stdin = &buf
    data,  := cmd2.CombinedOutput()
    if len(data) == 0 {
        fmt.Println("not runing")
    } else {
        fmt.Println("runing")
    }

優化後的代碼如下

// IsExeRuning : 程序是否運行,strKey:用於結果查找, strExeName:校驗查找的是否是要尋找的進程
func IsExeRuning(strKey string, strExeName string) bool {
    buf := bytes.Buffer{}
    cmd := exec.Command("wmic", "process", "get", "name,executablepath")
    cmd.Stdout = &buf
    cmd.Run()

    cmd2 := exec.Command("findstr", strKey)
    cmd2.Stdin = &buf
    data, err := cmd2.CombinedOutput()
    if err != nil && err.Error() != "exit status 1" {
        //XBLog.LogF("ServerMonitor", "IsExeRuning CombinedOutput error, err:%s", err.Error())
        return false
    }

    strData := string(data)
    if strings.Contains(strData, strExeName) {
        return true
    } else {
        return false
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章