SignalHandling

Younis Shah edited this page Sep 25, 2017 · 3 revisions

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
}
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.