github.com/rish1988/moby@v25.0.2+incompatible/cmd/dockerd/trap/testfiles/main.go (about) 1 package main 2 3 import ( 4 "os" 5 "syscall" 6 "time" 7 8 "github.com/docker/docker/cmd/dockerd/trap" 9 ) 10 11 func main() { 12 sigmap := map[string]os.Signal{ 13 "TERM": syscall.SIGTERM, 14 "QUIT": syscall.SIGQUIT, 15 "INT": os.Interrupt, 16 } 17 trap.Trap(func() { 18 time.Sleep(time.Second) 19 os.Exit(99) 20 }) 21 go func() { 22 p, err := os.FindProcess(os.Getpid()) 23 if err != nil { 24 panic(err) 25 } 26 s := os.Getenv("SIGNAL_TYPE") 27 multiple := os.Getenv("IF_MULTIPLE") 28 switch s { 29 case "TERM", "INT": 30 if multiple == "1" { 31 for { 32 p.Signal(sigmap[s]) 33 } 34 } else { 35 p.Signal(sigmap[s]) 36 } 37 case "QUIT": 38 p.Signal(sigmap[s]) 39 } 40 }() 41 time.Sleep(2 * time.Second) 42 }