From 94491434bc40aa5d104e4f8cdfe2efdad64bde92 Mon Sep 17 00:00:00 2001 From: Tatsushi Demachi Date: Tue, 22 Apr 2014 00:15:03 +0900 Subject: [PATCH] Change ping command loop like a RunLoop example --- cmd/ping/ping.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cmd/ping/ping.go b/cmd/ping/ping.go index 644d341..a4c574f 100644 --- a/cmd/ping/ping.go +++ b/cmd/ping/ping.go @@ -45,13 +45,15 @@ func main() { c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) signal.Notify(c, syscall.SIGTERM) + wait := make(chan bool) loop: for { select { case <-c: fmt.Println("get interrupted") - break loop + signal.Stop(c) + quit <- wait case res := <-onRecv: if _, ok := results[res.addr.String()]; ok { results[res.addr.String()] = res @@ -67,10 +69,10 @@ loop: } case err := <-errch: fmt.Println("Ping failed: %v", err) + signal.Stop(c) + quit <- wait + case <-wait: break loop; } } - wait := make(chan bool) - quit <- wait - <-wait }