gitlab.com/Raven-IO/raven-delve@v1.22.4/_fixtures/spawn.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 "strconv" 8 "time" 9 ) 10 11 func traceme1() { 12 fmt.Printf("parent starting\n") 13 } 14 15 func traceme2(n string) { 16 fmt.Printf("hello from %s\n", n) 17 } 18 19 func traceme3() { 20 fmt.Printf("done\n") 21 } 22 23 func main() { 24 exe, _ := os.Executable() 25 switch os.Args[1] { 26 case "spawn": 27 traceme1() 28 n, _ := strconv.Atoi(os.Args[2]) 29 cmds := []*exec.Cmd{} 30 for i := 0; i < n; i++ { 31 cmd := exec.Command(exe, "child", fmt.Sprintf("C%d", i)) 32 cmd.Stdout = os.Stdout 33 cmd.Start() 34 cmds = append(cmds, cmd) 35 } 36 37 for _, cmd := range cmds { 38 cmd.Wait() 39 } 40 41 time.Sleep(1 * time.Second) 42 traceme3() 43 44 case "child": 45 traceme2(os.Args[2]) 46 47 } 48 }