如何通过PID获取进程信息(Go语言)
大家好!我正在用Go编写一个小型监控工具,用于跟踪Linux中运行的进程。我需要根据PID(进程标识符)获取基本信息:进程名称、状态(运行中/睡眠/僵尸)、内存使用情况、运行时间以及可执行文件的路径。
我一开始很简单:读取 `/proc/[PID]/status` 和 `/proc/[PID]/cmdline`。但这看起来有点笨拙——需要解析文本文件,而要获取二进制文件的完整路径,还得读取符号链接 `/proc/[PID]/exe`。而且,我不确定这是否是跨平台解决方案——Windows和macOS没有 `/proc`。
目前我的代码是这样的:
```go
package main
import (
"fmt"
"io/ioutil"
"os"
"strconv"
)
func getProcessName(pid int) (string, error) {
data, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/comm", pid))
if err != nil {
return "", err
}
return string(data), nil
}
func main() {
name, _ := getProcessName(1)
fmt.