go基础库之获取当前进程PID

获取到运行进程的PID是非常有用的。操作系统应用可以使用PID来查找关于进程本身的信息。当进程失败时获取到的PID就非常有价值,这样就可以使用PID跟踪整个系统中的系统日志,如/var/log/messages/var/log/syslog

获取当前进程PID

Golang 版本

1.12.1

前言

获取到运行进程的PID是非常有用的。操作系统应用可以使用PID来查找关于进程本身的信息。当进程失败时获取到的PID就非常有价值,这样就可以使用PID跟踪整个系统中的系统日志,如/var/log/messages/var/log/syslog

实现

package main

import (
	"fmt"
	"os"
	"os/exec"
	"strconv"
)

func main() {

	pid := os.Getpid()
	fmt.Printf("进程 PID: %d \n", pid)

	prc := exec.Command("ps", "-p", strconv.Itoa(pid), "-v")
	out, err := prc.Output()
	if err != nil {
		panic(err)
	}

	fmt.Println(string(out))
}
进程 PID: 28259 
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
28259 pts/0    Sl+    0:00      0   648 102535 1224  0.0 ./main

原理

os包中的Getpid方法返回当前进程的PID。上述例子演示了如何通过系统应用ps命令获取该进程的更多信息。

在应用开始时打印PID可能很有用,在应用崩溃时,获取到的PID就可以调查相应的问题。