package main

import (
	"fmt"
	"os"
	"os/signal"
	"syscall"
)

func main() {

	go func() {
		counter := 0

		sc := make(chan os.Signal, 1)
		signal.Notify(
			sc,
			os.Interrupt,
			syscall.SIGTERM,
			syscall.SIGWINCH,
			syscall.SIGUSR1,
			syscall.SIGUSR2)
		for {
			s := <-sc
			counter++
			switch s {
			case os.Interrupt:
				fmt.Printf("\r\nVocê pressionou ^C, sinal #%d\r\n", counter)
				os.Exit(0)
			case syscall.SIGTERM:
				fmt.Printf("\r\nVocê enviou SIGTERM, sinal #%d\r\n", counter)
				os.Exit(0)
			case syscall.SIGUSR1:
				fmt.Printf("\r\nVocê enviou SIGUSR1, sinal #%d\r\n", counter)
			case syscall.SIGUSR2:
				fmt.Printf("\r\nVocê enviou SIGUSR2, sinal #%d\r\n", counter)
			case syscall.SIGWINCH:
				fmt.Printf("\r\nA janela foi redimensionada, sinal #%d\r\n", counter)
			}
		}

	}()

	c := make(chan struct{})
	<-c
}
