举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > goframe教程 GoFrame gproc-基本使用

goframe教程 GoFrame gproc-基本使用

2023-03-22 03:18 GoFrame教程

goframe教程 GoFrame gproc-基本使用

goframe教程

GoFrame 是一个开源的、高性能的 Web 开发框架,它是基于 Go 语言编写的,由国内开发者维护。GoFrame 提供了一套完整的解决方案,可以帮助开发者快速构建出高性能、高可用性的 Web 应用。GoFrame 的教程是专门为初学者准备的,旨在帮助初学者快速入门 GoFrame 框架,并使用它来开发 Web 应用。

GoFrame 教程包含了从安装到使用 GoFrame 的所有步骤,包括如何安装 GoFrame、如何使用 GoFrame 的核心功能、如何使用 GoFrame 的工具和库以及如何使用 GoFrame 创建 Web 应用等内容。教程中还会介绍一些有关 Go 语言的基本知识,以便初学者能够快速上手。

// 使用 go get 安装 goframe
go get -u github.com/goframe/goframe
// 使用 goframe 创建 web 项目
goframe new myproject
// 运行 web 项目
cd myproject && goframe run 

GoFrame gproc-基本使用

执行Shell命令

package main

import (
    "github.com/gogf/gf/v2/os/gproc"
    "fmt"
)

func main () {
    r, err := gproc.ShellExec(`sleep 3s; echo "hello gf!";`)
    fmt.Println("result:", r)
    fmt.Println(err)
}

执行后,可以看到程序等待了3秒之后,输出结果为:

result: hello gf!

<nil>

主进程与子进程

由​gproc.Manager​对象创建的进程都默认带子进程标识,在子进程程序中可以通过​gproc.IsChild()​方法来判断自身是否为子进程。

package main

import (
    "os"
    "time"
    "github.com/gogf/gf/v2/os/glog"
    "github.com/gogf/gf/v2/os/gproc"
)

func main () {
    if gproc.IsChild() {
        glog.Printf("%d: Hi, I am child, waiting 3 seconds to die", gproc.Pid())
        time.Sleep(time.Second)
        glog.Printf("%d: 1", gproc.Pid())
        time.Sleep(time.Second)
        glog.Printf("%d: 2", gproc.Pid())
        time.Sleep(time.Second)
        glog.Printf("%d: 3", gproc.Pid())
    } else {
        m := gproc.NewManager()
        p := m.NewProcess(os.Args[0], os.Args, os.Environ())
        p.Start()
        p.Wait()
        glog.Printf("%d: child died", gproc.Pid())
    }
}

执行后,终端打印结果如下:

2018-05-18 14:35:41.360 28285: Hi, I am child, waiting 3 seconds to die
2018-05-18 14:35:42.361 28285: 1
2018-05-18 14:35:43.361 28285: 2
2018-05-18 14:35:44.361 28285: 3
2018-05-18 14:35:44.362 28278: child died

多进程管理

gproc​除了能够创建子进程,管理子进程之外,也能管理非自身创建的其他进程。​gproc​可以同时管理多个进程,这里以单个进程为例来演示对进程的管理功能。

  • 我们使用​gedit​软件(Linux下常用的文本编辑器)随意打开一个文件,在进程当中我们看到该​gedit​的进程ID为28536

 $ ps aux | grep gedit
 john  28536  3.6  0.6 946208 56412 ?  Sl  14:39  0:00 gedit /home/john/Documents/text

  • 我们的程序如下:

package main


import (
    "fmt"
    "github.com/gogf/gf/v2/os/gproc"
)


func main () {
    pid := 28536
    m   := gproc.NewManager()
    m.AddProcess(pid)
    m.KillAll()
    m.WaitAll()
    fmt.Printf("%d was killedn", pid)
}

执行后,​gedit​被关闭,终端输出信息为:

28536 was killed


阅读全文
以上是编程学为你收集整理的goframe教程 GoFrame gproc-基本使用全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部