go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/cli/shell/terminal_posix.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 //go:build !windows 5 6 package shell 7 8 import ( 9 "os/signal" 10 "syscall" 11 12 "github.com/pkg/term/termios" 13 "golang.org/x/sys/unix" 14 ) 15 16 var terminalIos *unix.Termios 17 18 func (s *Shell) backupTerminalSettings() { 19 var err error 20 terminalIos, err = termios.Tcgetattr(uintptr(syscall.Stdin)) 21 if err != nil { 22 panic(err) 23 } 24 } 25 26 func (s *Shell) restoreTerminalSettings() { 27 signal.Reset(syscall.SIGINT, 28 syscall.SIGTERM, 29 syscall.SIGQUIT, 30 syscall.SIGWINCH) 31 syscall.SetNonblock(syscall.Stdin, false) 32 termios.Tcsetattr(uintptr(syscall.Stdin), termios.TCSANOW, terminalIos) 33 } 34 35 func (s *Shell) suspend() { 36 syscall.Kill(syscall.Getppid(), syscall.SIGTSTP) 37 }