我想使用适用于Linux操作系统的Golang从特定的子进程ID(pid)获取父进程ID(ppid)
我有这段代码给出了当前进程的ppid和pid,但是我想检索我指定的子进程的ppid,而不是当前进程。
package main
import (
"fmt"
"os"
)
func main() {
pid := os.Getpid()
parentpid := os.Getppid()
fmt.Printf("The parent process id of %v is %v\n", pid, parentpid)
}
是否有一种方法可以传递os.Getppid(pid)
这样的pid或其他任何方法来检索Golang中指定pid的ppid?
答案 0 :(得分:1)
我认为go标准库不允许您执行此操作,但是mitchellh/go-ps等第三方软件包可提供更多信息。
示例:
import ps "github.com/mitchellh/go-ps"
...
list, err := ps.Processes()
if err != nil {
panic(err)
}
for _, p := range list {
log.Printf("Process %s with PID %d and PPID %d", p.Executable(), p.Pid(), p.PPid())
}
输出:
2019/06/12 09:13:04 Process com.apple.photom with PID 68663 and PPID 1
2019/06/12 09:13:04 Process CompileDaemon with PID 49896 and PPID 49895
您还可以使用ps.FindProcess(<pid>)
查找特定进程并检查其PPid