本篇将介绍如何在程序终止后获取有关子进程的 PID 和基本信息。
syscallGolang 版本
1.12.1
前言
本篇将介绍如何在程序终止后获取有关子进程的 PID 和基本信息。
syscall
实现
main_running.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main
import (
"fmt"
"os/exec"
"runtime"
)
func () {
var cmd string
if runtime.GOOS == "windows" {
cmd = "timeout"
} else {
cmd = "sleep"
}
proc := exec.Command(cmd, "1")
proc.Start()
fmt.Printf("运行进程的进程状态:%vn", proc.ProcessState)
// 获取正在运行进程的PID
fmt.Printf("运行进程的PID:%dnn", proc.Process.Pid)
}
1
2
3
$ go run main_running.go
运行进程的进程状态:<nil>
运行进程的PID:45
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1
2
3
4
原理
os/execCommandCmdCmd
关于这个进程,只能获取到很少的信息。但是通过获取到的进程 PID,还可以通过系统方法来获取更多信息。
osProcessState