Golangで『go-ps』ライブラリを用いてプロセスIDからプロセス名を取得する
Pocket

Golangの標準ライブラリだと、プロセスIDは取得できるみたいなのだけど、どうもプロセス名は取ってこれないらしい。で、なんかいい方法ないかなと調べてたところ、『go-ps』というライブラリを見つけた。これなら、プロセス名も取ってこれそうだ。

Sponsored Links

以下、実際にいじってみた際のコード。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

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*