github.com/gwitmond/nulpunt@v0.0.0-20140409222138-65af2ff40594/gopath/src/npanalyse/process.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "os/signal" 7 ) 8 9 var processEndFuncs = make([]func(), 0) 10 11 // stuff to help manage this process (gracefull shutdown, etc) 12 func initProcess() { 13 14 // register signals to channel 15 sigChan := make(chan os.Signal) 16 signal.Notify(sigChan, os.Interrupt) 17 signal.Notify(sigChan, os.Kill) //++ does this really do anything? 18 19 // start a goroutine to wait for and handle a signal 20 go func() { 21 select { 22 case sig := <-sigChan: 23 // inform user about received signal 24 fmt.Printf("Received %s signal, quitting.\n", sig) 25 26 // call all processEndFuncs 27 for _, endFunc := range processEndFuncs { 28 endFunc() 29 } 30 // exit with status 0 31 os.Exit(0) 32 } 33 }() 34 }