1 Star 1 Fork 1

up-zero/gotool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
ps_windows.go 992 Bytes
一键复制 编辑 原始数据 按行查看 历史
GetcharZp 提交于 2023-08-16 10:03 +08:00 . fix
package gotool
import (
"os/exec"
"strings"
)
// PsByName 根据程序名查询进程列表
//
// name: 程序名
func PsByName(name string) ([]Process, error) {
ch := make(chan string)
defer close(ch)
finish := make(chan struct{})
defer close(finish)
processes := make([]Process, 0)
go func() {
for {
select {
case line := <-ch:
// line: "chrome.exe","15712","Console","1","266,760 K"
fields := strings.Split(line, ",")
if len(fields) >= 2 && strings.Contains(fields[0], name) {
ps := Process{
Pid: strings.Trim(fields[1], `"`),
PPid: "",
Cmd: strings.Trim(fields[0], `"`),
}
processes = append(processes, ps)
}
case <-finish:
return
}
}
}()
err := ExecShellWithNotify(ch, "tasklist /NH /FO CSV | findstr /I "+name)
finish <- struct{}{}
if err != nil {
exitErr, ok := err.(*exec.ExitError)
if ok && exitErr.ExitCode() == 1 {
return processes, nil
}
return nil, err
}
return processes, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/up-zero/gotool.git
git@gitee.com:up-zero/gotool.git
up-zero
gotool
gotool
main

搜索帮助