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

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