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  }