本篇将介绍如何在程序终止后获取有关子进程的PID和基本信息。
syscall获取子进程信息Golang 版本
1.12.1
前言
本篇将介绍如何在程序终止后获取有关子进程的PID和基本信息。
syscall实现
main_running.gopackage main
import (
"fmt"
"os/exec"
"runtime"
)
func main() {
var cmd string
if runtime.GOOS == "windows" {
cmd = "timeout"
} else {
cmd = "sleep"
}
proc := exec.Command(cmd, "1")
proc.Start()
// 在进程结束之前不会返回任何进程状态
fmt.Printf("运行进程的进程状态:%v\n", proc.ProcessState)
// 获取正在运行进程的PID
fmt.Printf("运行进程的PID:%d\n\n", proc.Process.Pid)
}
$ go run main_running.go
运行进程的进程状态:<nil>
运行进程的PID:45
main.go原理
os/execCommandCmdCmd关于这个进程,只能获取到很少的信息。但是通过获取到的进程PID,还可以通过系统方法来获取更多信息。
osProcessState