package main import ( "log" "os" "bufio" "github.com/docker/docker/pkg/reexec" "os/exec" "sync" ) func init() { log.Printf("init start, os.Args = %+v\n", os.Args) reexec.Register("childProcess", childProcess) if reexec.Init() { reader := bufio.NewReader(os.Stdin) reader.ReadString('\n') os.Exit(0) } } func childProcess() { log.Println("childProcess") } func main() { log.Printf("main start, os.Args = %+v\n", os.Args) cmd :=make([]*exec.Cmd,5) var wg sync.WaitGroup wg.Add(5) for i:=0;i<5;i++{ go func(i int,cmd []*exec.Cmd){ cmd[i] = reexec.Command("childProcess") cmd[i] .Stdin = os.Stdin cmd[i] .Stdout = os.Stdout cmd[i] .Stderr = os.Stderr if err := cmd[i] .Start(); err != nil { log.Panicf("failed to run command: %s", err) } log.Println("started,begin to wait...",i) wg.Done() }(i,cmd) } wg.Wait() for j:=0;j<5;j++{ if err := cmd[j] .Wait(); err != nil { log.Panicf("failed to wait command[%d]: %s", j,err) } } log.Println("main exit") reader := bufio.NewReader(os.Stdin) reader.ReadString('\n') }
golang 子进程
猜你喜欢
转载自blog.csdn.net/templarzq/article/details/84826440
今日推荐
周排行