golang - 시그널 핸들링
Go에서는 아래처럼 시그널을 핸들링 할 수 있다.
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
func main() {
sig := make(chan os.Signal, 1)
signal.Notify(sig,
syscall.SIGKILL,
syscall.SIGTERM,
syscall.SIGINT)
s := <- sig
fmt.Println("signal: ", s)
}
syscall 패키지의 시그널은 linux/unix에 있는 개념이기 때문에 Windows 플랫폼에서의 CTRL^C 나 CTRL^BREAK 는 잡을 수 없다.
os.Interrupt로 CTRL^C 과 CTRL^BREAK를 잡기 위해 Windows에 대응하기 위해서는 아래처럼 한다.
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
func main() {
sig := make(chan os.Signal, 1)
signal.Notify(sig,
syscall.SIGKILL,
syscall.SIGTERM,
syscall.SIGINT,
os.Interrupt)
s := <- sig
fmt.Println("signal: ", s)
}
이 글은 2019-09-28에 작성되었습니다.