Получить идентификатор родительского процесса из идентификатора дочернего процесса с помощью Golang - PullRequest
0 голосов
/ 12 июня 2019

Я хочу получить идентификатор родительского процесса (ppid) из определенного идентификатора дочернего процесса (pid), используя Golang для Linux OS

У меня есть этот код, который дает 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)

 }

Есть ли способ передать pid как этот os.Getppid(pid) или любой другой метод для получения ppid указанного pid в Golang?

1 Ответ

1 голос
/ 12 июня 2019

Я не думаю, что стандартная библиотека 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...