1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

added functionality to interrupt the terminal when it is waiting for an input

Signed-off-by: Avi Vaid <avaid1996@gmail.com>
This commit is contained in:
Avi Vaid 2016-08-04 09:35:29 -07:00
parent e10f6a2e54
commit c4b07f4683

View file

@ -6,6 +6,7 @@ package term
import ( import (
"errors" "errors"
"fmt"
"io" "io"
"os" "os"
"os/signal" "os/signal"
@ -109,9 +110,14 @@ func SetRawTerminalOutput(fd uintptr) (*State, error) {
func handleInterrupt(fd uintptr, state *State) { func handleInterrupt(fd uintptr, state *State) {
sigchan := make(chan os.Signal, 1) sigchan := make(chan os.Signal, 1)
signal.Notify(sigchan, os.Interrupt) signal.Notify(sigchan, os.Interrupt)
go func() { go func() {
_ = <-sigchan for range sigchan {
// quit cleanly and the new terminal item is on a new line
fmt.Println()
signal.Stop(sigchan)
close(sigchan)
RestoreTerminal(fd, state) RestoreTerminal(fd, state)
os.Exit(1)
}
}() }()
} }