首页 > 编程开发 > Go语言    日期:2026-07-14 / 浏览

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
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章

1 2 3 4 5