(18条消息) Go语言自学系列 | golang标准库os包进程相关操作_COCOgsta的博客-CSDN博客_golang os包



Go语言自学系列 | golang标准库os包进程相关操作

COCOgsta 已于 2022-04-09 20:55:43 修改 81 收藏
分类专栏: 视频学习笔记 文章标签: golang go

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客


  1. 1
    package main
  2. 2
  3. 3
    import (
  4. 4
    "fmt"
  5. 5
    "os"
  6. 6
    "time"
  7. 7
    )
  8. 8
  9. 9
    func main() {
  10. 10
    // 获得当前正在运行的进程id
  11. 11
    fmt.Printf("os.Getegid(): %v\n", os.Getegid())
  12. 12
    // 父id
  13. 13
    fmt.Printf("os.Getegid(): %v\n", os.Getegid())
  14. 14
  15. 15
    // 设置新进程的属性
  16. 16
    attr := &os.ProcAttr{
  17. 17
    // files指定新进程继承的活动文件对象
  18. 18
    // 前三个分别为,标准输入、标准输出、标准错误输出
  19. 19
    Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},
  20. 20
    // 新进程的环境变量
  21. 21
    Env: os.Environ(),
  22. 22
    }
  23. 23
  24. 24
    // 开始一个新进程
  25. 25
    p, err := os.StartProcess("c:\\windows\\system32\\notepad.exe", []string{"c:\\windows\\system32\\notepad.exe", "d:\\a.txt"}, attr)
  26. 26
    if err != nil {
  27. 27
    fmt.Println(err)
  28. 28
    }
  29. 29
    fmt.Println(p)
  30. 30
    fmt.Println("进程ID:", p.Pid)
  31. 31
  32. 32
    // 通过进程ID查找进程
  33. 33
    p2, _ := os.FindProcess(p.Pid)
  34. 34
    fmt.Println(p2)
  35. 35
  36. 36
    // 等待10秒,执行函数
  37. 37
    time.AfterFunc(time.Second*10, func() {
  38. 38
    // 向p进程发出退出信号
  39. 39
    p.Signal(os.Kill)
  40. 40
    })
  41. 41
  42. 42
    // 等待进程p的退出,返回进程状态
  43. 43
    ps, _ := p.Wait()
  44. 44
    fmt.Println(ps.String())
  45. 45
    }
  46. 46

运行结果

  1. 1
    [Running] go run "d:\SynologyDrive\软件开发\go\golang入门到项目实战\goproject\360duote.com\pro01\test.go"
  2. 2
    os.Getegid(): -1
  3. 3
    os.Getegid(): -1
  4. 4
    &{9108 344 0 {{0 0} 0 0 0 0}}
  5. 5
    进程ID: 9108
  6. 6
    &{9108 376 0 {{0 0} 0 0 0 0}}
  7. 7
    exit status 1


yg9538 2022年7月22日 22:48 274 收藏文档