Skip to content

Instantly share code, notes, and snippets.

@ryanuber
Created February 8, 2015 20:26
Show Gist options
  • Save ryanuber/368a7b8b63e76d967759 to your computer and use it in GitHub Desktop.
Save ryanuber/368a7b8b63e76d967759 to your computer and use it in GitHub Desktop.
SIGHUP race
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
sigCh := make(chan os.Signal)
signal.Notify(sigCh, syscall.SIGHUP)
go func() {
<-sigCh
fmt.Println("caught")
}()
time.Sleep(time.Second)
fmt.Println("finish")
}
@ryanuber
Copy link
Author

ryanuber commented Feb 8, 2015

Signal sent before handler is registered:

$ ./main & kill -HUP $!
[1] 16944
[1]+  Hangup: 1               ./main

Handler is given a short time to complete registering:

$ ./main & sleep 0.1 && kill -HUP $!
[1] 16947
caught
finish

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment