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

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


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

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

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


package main 
 
import ( 
    "fmt" 
    "os" 
    "time" 
) 
 
func main() { 
    // 获得当前正在运行的进程id 
    fmt.Printf("os.Getegid(): %v\n", os.Getegid()) 
    // 父id 
    fmt.Printf("os.Getegid(): %v\n", os.Getegid()) 
 
    // 设置新进程的属性 
    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.Println(err) 
    } 
    fmt.Println(p) 
    fmt.Println("进程ID:", p.Pid) 
 
    // 通过进程ID查找进程 
    p2, _ := os.FindProcess(p.Pid) 
    fmt.Println(p2) 
 
    // 等待10秒,执行函数 
    time.AfterFunc(time.Second*10, func() { 
        // 向p进程发出退出信号 
        p.Signal(os.Kill) 
    }) 
 
    // 等待进程p的退出,返回进程状态 
    ps, _ := p.Wait() 
    fmt.Println(ps.String()) 
} 
 

运行结果

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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/guolianggsta/article/details/123608486
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2023-01-03 21:01:25
  • 阅读 ( 366 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢