管道控制循环退出

来源:互联网 发布:v380监控软件安卓版 编辑:程序博客网 时间:2024/06/06 18:32

package main

import (
“fmt”
“os”
“os/signal”
“syscall”
)

var (
stop chan bool
)

func main() {
stop = make(chan bool)
go run()
WaitForExitSign()
close(stop) //关闭管道, close管道以后就可以从管道中读数据了
fmt.Println(“结束程序”)

}

func run() {
for {
fmt.Println(“hello world”)

    select {    case <-stop:  //所以程序会走到这里,然后跳出循环        fmt.Println("stop")        goto Stop    default:        fmt.Println("default")    }}Stop:

}

//监听ctrl+c信号
func WaitForExitSign() {
c := make(chan os.Signal, 1)
//结束,收到ctrl+c 信号
signal.Notify(c, os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGHUP)
<-c
}

原创粉丝点击