golang 获取所有进程
要在Go中获取所有进程,可以使用os和os/exec包中的函数。以下是一个示例代码:
package main
import (
"fmt"
"os"
"os/exec"
"strings"
)
func main() {
cmd := exec.Command("ps", "-e", "-o", "pid,ppid,comm")
output, err := cmd.Output()
if err != nil {
fmt.Println("Error:", err)
os.Exit(1)
}
processes := strings.Split(string(output), "\n")
for _, process := range processes[1:] {
fields := strings.Fields(process)
if len(fields) >= 3 {
pid := fields[0]
ppid := fields[1]
comm := fields[2]
fmt.Printf("PID: %s, PPID: %s, Command: %s\n", pid, ppid, comm)
}
}
}
这个示例使用ps命令来获取所有进程的信息。-e选项表示获取所有进程,-o选项指定输出格式为pid,ppid,comm,即进程ID、父进程ID和命令名称。
然后,通过exec.Command函数创建一个命令对象,并调用Output方法执行命令。输出结果被读取并按行分割为字符串数组。
然后,遍历每个进程的信息并打印出进程ID、父进程ID和命令名称。
请注意,此方法在不同的操作系统上可能会有所不同。在Windows上,可以使用tasklist命令来获取所有进程。在Linux上,可以使用ps命令或读取/proc目录中的进程信息文件
原文地址: http://www.cveoy.top/t/topic/iK7g 著作权归作者所有。请勿转载和采集!