github.com/gogf/gf@v1.16.9/.example/os/gproc/gproc3.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  	"time"
     6  
     7  	"github.com/gogf/gf/os/glog"
     8  	"github.com/gogf/gf/os/gproc"
     9  )
    10  
    11  // 父进程销毁后,使用进程管理器查看存活的子进程。
    12  // 请使用go build编译后运行,不要使用IDE运行,因为IDE大多采用的是子进程方式执行。
    13  func main() {
    14  	if gproc.IsChild() {
    15  		glog.Printf("%d: I am child, waiting 10 seconds to die", gproc.Pid())
    16  		//p, err := os.FindProcess(os.Getppid())
    17  		//fmt.Println(err)
    18  		//p.Kill()
    19  		time.Sleep(2 * time.Second)
    20  		glog.Printf("%d: 2", gproc.Pid())
    21  		time.Sleep(2 * time.Second)
    22  		glog.Printf("%d: 4", gproc.Pid())
    23  		time.Sleep(2 * time.Second)
    24  		glog.Printf("%d: 6", gproc.Pid())
    25  		time.Sleep(2 * time.Second)
    26  		glog.Printf("%d: 8", gproc.Pid())
    27  		time.Sleep(2 * time.Second)
    28  		glog.Printf("%d: died", gproc.Pid())
    29  	} else {
    30  		p := gproc.NewProcess(os.Args[0], os.Args, os.Environ())
    31  		p.Start()
    32  		glog.Printf("%d: I am main, waiting 3 seconds to die", gproc.Pid())
    33  		time.Sleep(3 * time.Second)
    34  		glog.Printf("%d: died", gproc.Pid())
    35  	}
    36  }