mattn / go-tty

MIT License
208 stars 18 forks source link

TTY ignores interrupt signal on windows #11

Closed azr closed 5 years ago

azr commented 5 years ago

Howdy, the following code deadlocks ( you cannot ctrl-c ) on windows but not on mac or linux :

package main

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

    tty "github.com/mattn/go-tty"
    "golang.org/x/sync/errgroup"
)

func main() {
    sigCh := make(chan os.Signal, 1)
    signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
    defer signal.Stop(sigCh)

    wg := errgroup.Group{}
    wg.Go(func() error {
        sig := <-sigCh
        fmt.Printf("received %s", sig)
        return nil
    })

    tty, err := tty.Open()
    if err != nil {
        panic(err)
    }
    defer tty.Close()

    println(wg.Wait())
}