| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // +build windows
- package prompt
- import (
- "os"
- "os/signal"
- "syscall"
- "github.com/c-bata/go-prompt/internal/debug"
- )
- func (p *Prompt) handleSignals(exitCh chan int, winSizeCh chan *WinSize, stop chan struct{}) {
- sigCh := make(chan os.Signal, 1)
- signal.Notify(
- sigCh,
- syscall.SIGINT,
- syscall.SIGTERM,
- syscall.SIGQUIT,
- )
- for {
- select {
- case <-stop:
- debug.Log("stop handleSignals")
- return
- case s := <-sigCh:
- switch s {
- case syscall.SIGINT: // kill -SIGINT XXXX or Ctrl+c
- debug.Log("Catch SIGINT")
- exitCh <- 0
- case syscall.SIGTERM: // kill -SIGTERM XXXX
- debug.Log("Catch SIGTERM")
- exitCh <- 1
- case syscall.SIGQUIT: // kill -SIGQUIT XXXX
- debug.Log("Catch SIGQUIT")
- exitCh <- 0
- }
- }
- }
- }
|