[go] 시그널 핸들러 등록

다음은 Go 언어에서 시그널 핸들러를 등록하는 예제입니다.

package main

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

func main() {
	// 시그널을 받을 채널 생성
	sig := make(chan os.Signal, 1)
	signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)

	// 시그널 핸들링
	go func() {
		s := <-sig
		fmt.Println("Received signal:", s)
		// 종료 또는 정리 작업 수행
		// ...
		os.Exit(1)
	}()

	// 프로그램 실행
	// ...
}

위 예제에서는 os/signal 패키지의 Notify 함수를 사용하여 SIGINTSIGTERM 시그널을 받을 채널에 등록합니다. 그런 다음 고루틴을 사용하여 해당 채널에서 시그널을 수신하고 처리하는 함수를 실행합니다.

시그널 핸들러를 등록함으로써 프로그램이 안전하게 종료될 수 있도록 할 수 있습니다.

참고 자료: