使用golang语言根据进程PID找到进程全路径绝对路径包括进程名称封装成函数传入pid返回绝对路径可以只关注windows平台golang120版本以上支持
在Go语言中,可以使用github.com/mitchellh/go-ps包来获取进程信息,并根据PID找到进程全路径。但是该包不支持直接获取进程的绝对路径,因此我们需要使用github.com/kardianos/osext包来获取可执行文件的绝对路径。
首先,需要在Go项目中引入这两个包:
import (
"fmt"
ps "github.com/mitchellh/go-ps"
"github.com/kardianos/osext"
)
接下来,我们可以使用以下函数来实现根据进程PID找到进程全路径的功能:
func getProcessPath(pid int) (string, error) {
// 获取所有进程列表
processes, err := ps.Processes()
if err != nil {
return "", err
}
// 遍历进程列表,查找指定PID的进程
for _, process := range processes {
if process.Pid() == pid {
// 获取进程名称
processName := process.Executable()
// 获取可执行文件的绝对路径
executablePath, err := osext.ExecutableFolder()
if err != nil {
return "", err
}
// 拼接进程全路径
fullPath := fmt.Sprintf("%s\\%s", executablePath, processName)
return fullPath, nil
}
}
return "", fmt.Errorf("Process with PID %d not found", pid)
}
然后,我们可以调用 getProcessPath 函数来获取进程的绝对路径:
func main() {
pid := 12345 // 替换为实际的PID
fullPath, err := getProcessPath(pid)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Process Path:", fullPath)
}
请注意,为了能够获取可执行文件的绝对路径,该代码需要在编译后的可执行文件中运行,而不是在IDE中直接运行
原文地址: https://www.cveoy.top/t/topic/ic5H 著作权归作者所有。请勿转载和采集!