수색…


통사론

  • func 통지 (c chan <- os.Signal, sig ... os.Signal)

매개 변수

매개 변수 세부
c chan <- os.Signal os.Signal 유형의 channel 수신 os.Signal . sigChan := make(chan os.Signal) 쉽게 만들 수 있습니다 sigChan := make(chan os.Signal)
시그 ... 시그널 os.Signal types의 목록은이 channelos.Signal 내려 보낼 수 있습니다. 자세한 옵션은 https://golang.org/pkg/syscall/#pkg-constants 를 참조 하십시오 .

채널에 신호 할당

종종 프로그램이 OS에 의해 멈추고 상태를 보존하기 위해 몇 가지 조치를 취하거나 애플리케이션을 정리하라는 메시지가 나오면 잡을만한 이유가 있습니다. 이를 위해 표준 라이브러리의 os/signal 패키지를 사용할 수 있습니다. 다음은 시스템의 모든 신호를 채널에 할당 한 다음 해당 신호에 반응하는 간단한 예제입니다.

package main

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

func main() {
    // create a channel for os.Signal
    sigChan := make(chan os.Signal)

    // assign all signal notifications to the channel 
    signal.Notify(sigChan)

    // blocks until you get a signal from the OS
    select {
    // when a signal is received
    case sig := <-sigChan:
        // print this line telling us which signal was seen
        fmt.Println("Received signal from OS:", sig)
    }
}

위의 스크립트를 실행하면 채널이 생성되고 해당 채널이 신호를받을 때까지 차단됩니다.

$ go run signals.go 
^CReceived signal from OS: interrupt

위의 ^CSIGINT 신호를 보내는 키보드 명령 CTRL+C 입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow