首页 > 其他 > 详细

1.7获取os信号

时间:2018-03-17 22:33:45      阅读:242      评论:0      收藏:0      [点我收藏+]
package main

import (
    "fmt"
    "os"
    "os/signal"
    "syscall"
)

func main() {

    // Create the channel where the received
    // signal would be sent. The Notify
    // will not block when the signal
    // is sent and the channel is not ready.
    // So it is better to
    // create buffered channel.
    sChan := make(chan os.Signal, 1)

    // Notify will catch the
    // given signals and send
    // the os.Signal value
    // through the sChan
    signal.Notify(sChan,
        syscall.SIGHUP,
        syscall.SIGINT,
        syscall.SIGTERM,
        syscall.SIGQUIT,
        syscall.SIGKILL)

    // Create channel to wait till the
    // signal is handled.
    exitChan := make(chan int)
    go func() {
        signal := <-sChan
        switch signal {
        case syscall.SIGHUP:
            fmt.Println("The calling terminal has been closed")
            exitChan <- 0

        case syscall.SIGINT:
            fmt.Println("The process has been interrupted by CTRL+C")
            exitChan <- 1

        case syscall.SIGTERM:
            fmt.Println("kill SIGTERM was executed for process")
            exitChan <- 1

        case syscall.SIGKILL:
            fmt.Println("SIGKILL handler")
            exitChan <- 1

        case syscall.SIGQUIT:
            fmt.Println("kill SIGQUIT was executed for process")
            exitChan <- 1
        }
    }()

    code := <-exitChan
    os.Exit(code)
}


// ^CThe process has been interrupted by CTRL+C

1.7获取os信号

原文:https://www.cnblogs.com/zrdpy/p/8593116.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!