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

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"time"
     7  
     8  	"github.com/gogf/gf/os/glog"
     9  	"github.com/gogf/gf/os/gproc"
    10  	"github.com/gogf/gf/os/gtime"
    11  	"github.com/gogf/gf/os/gtimer"
    12  )
    13  
    14  func main() {
    15  	fmt.Printf("%d: I am child? %v\n", gproc.Pid(), gproc.IsChild())
    16  	if gproc.IsChild() {
    17  		gtimer.SetInterval(time.Second, func() {
    18  			if err := gproc.Send(gproc.PPid(), []byte(gtime.Datetime())); err != nil {
    19  				glog.Error(err)
    20  			}
    21  		})
    22  		select {}
    23  	} else {
    24  		m := gproc.NewManager()
    25  		p := m.NewProcess(os.Args[0], os.Args, os.Environ())
    26  		p.Start()
    27  		for {
    28  			msg := gproc.Receive()
    29  			fmt.Printf("%d: receive from %d, data: %s\n", gproc.Pid(), msg.SendPid, string(msg.Data))
    30  		}
    31  	}
    32  }