golang标准库os模块-进程相关操作
package main
import (
"fmt"
"os"
"time"
)
func main() {
// 获取当前正在运行的进程id
fmt.Printf("os.Getpid(): %v\n", os.Getpid())
// 父id
fmt.Printf("os.Getppid(): %v\n", os.Getppid())
// 设置新进程的属性
attr := &os.ProcAttr{
// files指定新进程集成的活动文件对象
// 前三个分别为 标准输入 标准输出 标准错误输出
Files: []*os.File{
os.Stdin,
os.Stdout,
os.Stderr,
},
// 新进程的环境变量
Env: os.Environ(),
}
p, err := os.StartProcess("C:\\Windows\\System32\\notepad.exe", []string{"C:\\Windows\\System32\\notepad.exe", "D:\\a.txt"}, attr)
if err != nil {
fmt.Printf("err: %v\n", err)
}
fmt.Printf("p: %v\n", p)
fmt.Println("进程ID--->", p.Pid)
// 通过进程ID查找进程
p2, err2 := os.FindProcess(p.Pid)
if err2 != nil {
fmt.Printf("err2: %v\n", err2)
}
fmt.Printf("p2: %v\n", p2)
// 等一会,执行关闭进程
time.AfterFunc(time.Second*5, func() {
// 关闭进程
p.Signal(os.Kill)
})
// 等待进程退出
ps, err3 := p.Wait()
if err3 != nil {
fmt.Printf("err3: %v\n", err3)
}
fmt.Printf("ps.String(): %v\n", ps.String())
}
运行结果