本篇将介绍如何在程序终止后获取有关子进程的 PID 和基本信息。

syscall


Golang 版本

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