# 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.

```
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())
	sig := make(chan os.Signal, 1)
	signal.Notify(sig, os.Interrupt)
	<-sig
}
```