| --- | |
| title: SignalHandling | |
| --- | |
| ## Introduction | |
| Sometimes an application needs to save internal state or perform some cleanup activity before it exits, or needs to be able to reload a configuration file or write a memory/cpu profile on demand. In UNIX-like operating systems, signals can accomplish these tasks. | |
| ## Example | |
| The following code demonstrates a program that waits for an interrupt signal and removes a temporary file when it occurs. | |
| ```go | |
| package main | |
| import ( | |
| "io/ioutil" | |
| "os" | |
| "os/signal" | |
| ) | |
| func main() { | |
| f, err := ioutil.TempFile("", "test") | |
| if err != nil { | |
| panic(err) | |
| } | |
| defer os.Remove(f.Name()) | |
| defer f.Close() | |
| sig := make(chan os.Signal, 1) | |
| signal.Notify(sig, os.Interrupt) | |
| <-sig | |
| } | |
| ``` |