Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

40 Zeilen
660B

  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "log"
  6. "os"
  7. "os/signal"
  8. "syscall"
  9. "votes/http"
  10. "votes/storage"
  11. )
  12. func main() {
  13. var l string
  14. flag.StringVar(&l, "l", "127.0.0.1:8080", "Listen")
  15. flag.Parse()
  16. if err := storage.Init(); err != nil {
  17. _, _ = fmt.Fprintf(os.Stderr, "error while reading entries\n")
  18. os.Exit(1)
  19. }
  20. signal.Ignore(syscall.SIGHUP)
  21. c := make(chan os.Signal)
  22. signal.Notify(c, syscall.SIGTERM, syscall.SIGINT)
  23. go listenExit(c)
  24. _ = http.Start(l)
  25. }
  26. func listenExit(c chan os.Signal) {
  27. _ = <-c
  28. log.Printf("Saving results...\n")
  29. if err := storage.Save(); err != nil {
  30. log.Printf("error saving results: %s", err)
  31. }
  32. os.Exit(0)
  33. }