ZBLOG

golang linux 有第三方库能够枚举进程,并获得所有进程全路径吗

是的,Golang 中有第三方库可以实现枚举进程并获取所有进程的全路径。其中比较常用的库是 github.com/mitchellh/go-ps

该库提供了一个 Processes() 函数,可以返回当前系统中所有进程的列表。每个进程都包含 PID、父进程 PID、命令行参数等信息。然后可以遍历这个列表,使用 os/exec 包中的 Command() 函数来执行 which 命令获取每个进程的全路径。

下面是一个简单的示例代码:

package main

import (
    "fmt"
    "os/exec"

    "github.com/mitchellh/go-ps"
)

func main() {
    processes, err := ps.Processes()
    if err != nil {
        fmt.Println(err)
        return
    }

    for _, process := range processes {
        cmd := exec.Command("sh", "-c", fmt.Sprintf("which %s", process.Executable()))
        output, err := cmd.Output()
        if err != nil {
            continue
        }
        fullPath := string(output)
        fmt.Printf("Process: %d, Full Path: %s\n", process.Pid(), fullPath)
    }
}

上述代码会输出系统中所有进程的 PID 和全路径信息。需要注意,在 Linux 系统中,某些进程可能由内核启动或者没有对应的可执行文件,此时可能无法获取到其全路径信息。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4136

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?