github.com/whtcorpsinc/MilevaDB-Prod@v0.0.0-20211104133533-f57f4be3b597/soliton/signal/signal_windows.go (about) 1 // Copyright 2020 WHTCORPS INC, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 // +build windows 14 15 package signal 16 17 import ( 18 "os" 19 "os/signal" 20 "syscall" 21 22 "github.com/whtcorpsinc/milevadb/soliton/logutil" 23 "go.uber.org/zap" 24 ) 25 26 // SetupSignalHandler setup signal handler for MilevaDB Server 27 func SetupSignalHandler(shutdownFunc func(bool)) { 28 //todo deal with dump goroutine stack on windows 29 closeSignalChan := make(chan os.Signal, 1) 30 signal.Notify(closeSignalChan, 31 syscall.SIGHUP, 32 syscall.SIGINT, 33 syscall.SIGTERM, 34 syscall.SIGQUIT) 35 36 go func() { 37 sig := <-closeSignalChan 38 logutil.BgLogger().Info("got signal to exit", zap.Stringer("signal", sig)) 39 shutdownFunc(sig == syscall.SIGQUIT) 40 }() 41 }