要在Go中获取所有进程,可以使用osos/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目录中的进程信息文件

golang 获取所有进程

原文地址: http://www.cveoy.top/t/topic/iK7g 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录