---
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
}
```
