diff --git a/count/3/cmd/count/main.go b/count/3/cmd/count/main.go index 86a26de..af71888 100644 --- a/count/3/cmd/count/main.go +++ b/count/3/cmd/count/main.go @@ -12,6 +12,9 @@ const usage = `Counts words (or lines) from stdin (or files). Usage: count [-lines] [file...]` func main() { + sig := make(chan os.Signal, 1) + signal.Notify(sig, syscall.SIGINT) + flag.Usage = func() { fmt.Println(usage) flag.PrintDefaults() @@ -41,4 +44,10 @@ func main() { for line, n := range counts { fmt.Printf("%d\t%s\n", n, line) } + select { + case <-sig: + println("\nProgram interrupted by user pressing Ctrl+C hence exiting gracefully!") + os.Exit(0) + default: + } }