Skip to content

Instantly share code, notes, and snippets.

@briancain
Created August 12, 2017 21:48
Show Gist options
  • Save briancain/f5b29bd3b814823a78f1e66efdb6ca1b to your computer and use it in GitHub Desktop.
Save briancain/f5b29bd3b814823a78f1e66efdb6ca1b to your computer and use it in GitHub Desktop.
brian@localghost:dockerdoomd % go run socket.go ±[●●][master]
2017/08/12 14:42:34 Starting echo server
2017/08/12 14:42:34 Created socket at /tmp/go.sock
2017/08/12 14:42:34 about to listen
package main
import (
"log"
"net"
"os"
"os/signal"
"syscall"
)
func main() {
log.Println("Starting echo server")
socketFile := "/tmp/go.sock"
ln, err := net.Listen("unix", socketFile)
if err != nil {
log.Fatal("Listen error: ", err)
} else {
log.Println("Created socket at ", socketFile)
}
sigc := make(chan os.Signal, 1)
signal.Notify(sigc, os.Interrupt, syscall.SIGTERM)
go func(ln net.Listener, c chan os.Signal) {
sig := <-c
log.Printf("Caught signal %s: shutting down.", sig)
ln.Close()
os.Exit(0)
}(ln, sigc)
for {
log.Println("about to listen")
_, err := ln.Accept()
log.Println("We made it past accept")
if err != nil {
log.Fatal("Accept error: ", err)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment