新聞中心
執(zhí)行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)
}執(zhí)行后,可以看到程序等待了3秒之后,輸出結(jié)果為:

你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事網(wǎng)站制作、做網(wǎng)站、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)制作、做網(wǎng)站、建網(wǎng)站。成都創(chuàng)新互聯(lián)公司擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺(jué)設(shè)計(jì)專才。
result: hello gf!
主進(jìn)程與子進(jìn)程
由?gproc.Manager?對(duì)象創(chuàng)建的進(jìn)程都默認(rèn)帶子進(jìn)程標(biāo)識(shí),在子進(jìn)程程序中可以通過(guò)?gproc.IsChild()?方法來(lái)判斷自身是否為子進(jìn)程。
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())
}
}執(zhí)行后,終端打印結(jié)果如下:
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多進(jìn)程管理
?gproc?除了能夠創(chuàng)建子進(jìn)程,管理子進(jìn)程之外,也能管理非自身創(chuàng)建的其他進(jìn)程。?gproc?可以同時(shí)管理多個(gè)進(jìn)程,這里以單個(gè)進(jìn)程為例來(lái)演示對(duì)進(jìn)程的管理功能。
- 我們使用?
gedit?軟件(Linux下常用的文本編輯器)隨意打開(kāi)一個(gè)文件,在進(jìn)程當(dāng)中我們看到該?gedit?的進(jìn)程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 killed\n", pid)
}執(zhí)行后,?gedit?被關(guān)閉,終端輸出信息為:
28536 was killed 名稱欄目:創(chuàng)新互聯(lián)GoFrame教程:GoFramegproc-基本使用
標(biāo)題網(wǎng)址:http://m.5511xx.com/article/dhjecsg.html


咨詢
建站咨詢
