Golangの標準ライブラリだと、プロセスIDは取得できるみたいなのだけど、どうもプロセス名は取ってこれないらしい。 で、なんかいい方法ないかなと調べてたところ、『go-ps』というライブラリを見つけた。 これなら、プロセス名も取ってこれそうだ。
以下、実際にいじってみた際のコード。FindProcessの使い方は、基本的にはos.FindProcessとあまり変わらないみたいだ。
package main
import (
"fmt"
"os"
"github.com/mitchellh/go-ps"
)
func main() {
pid := os.Getpid()
pidInfo, _ := ps.FindProcess(pid)
fmt.Println(pidInfo)
fmt.Printf(" PID : %d\n", pidInfo.Pid())
fmt.Printf(" PPID : %d\n", pidInfo.PPid())
fmt.Printf(" Process name : %s\n", pidInfo.Executable())
ppidInfo, _ := ps.FindProcess(pidInfo.PPid())
fmt.Println("\n=================")
fmt.Printf(" Parent process name : %s\n", ppidInfo.Executable())
}
実際に実行してみた結果がこちら。
[blacknon@blacknon-ThinkPad-X201]% ~(`・ω・´) < ./test-ps
&{12007 16050 82 12007 16050 test-ps}
PID : 12007
PPID : 16050
Process name : test-ps
=================
Parent process name : zsh