package main import ( "os" "syscall" "time" "github.com/docker/docker/pkg/signal" "github.com/sirupsen/logrus" ) func main() { sigmap := map[string]os.Signal{ "TERM": syscall.SIGTERM, "QUIT": syscall.SIGQUIT, "INT": os.Interrupt, } signal.Trap(func() { time.Sleep(time.Second) os.Exit(99) }, logrus.StandardLogger()) go func() { p, err := os.FindProcess(os.Getpid()) if err != nil { panic(err) } s := os.Getenv("SIGNAL_TYPE") multiple := os.Getenv("IF_MULTIPLE") switch s { case "TERM", "INT": if multiple == "1" { for { p.Signal(sigmap[s]) } } else { p.Signal(sigmap[s]) } case "QUIT": p.Signal(sigmap[s]) } }() time.Sleep(2 * time.Second) }