W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
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é)果為:
result: hello gf!
<nil>
由?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
?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
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: