GOLang判断进程是否存在实现方式
作者:不二星空
该文主要介绍了使用Go语言编写进程检测工具的方法,由于Go语言本身没有直接获取进程信息的功能,作者决定通过执行命令的方式实现,最终给出了优化后的代码示例
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
}
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
