From 70c19ccf16a0f8ef2d0ef8ef44f69dd72aa210b1 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sat, 4 Nov 2023 13:46:29 +0900 Subject: [PATCH] Fix CTRL-Z handling: Signal SIGSTOP to PGID Fix #3501 --- src/terminal_unix.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/terminal_unix.go b/src/terminal_unix.go index 4cee73b..1ce7854 100644 --- a/src/terminal_unix.go +++ b/src/terminal_unix.go @@ -7,6 +7,8 @@ import ( "os/signal" "strings" "syscall" + + "golang.org/x/sys/unix" ) func notifyOnResize(resizeChan chan<- os.Signal) { @@ -14,7 +16,12 @@ func notifyOnResize(resizeChan chan<- os.Signal) { } func notifyStop(p *os.Process) { - p.Signal(syscall.SIGSTOP) + pid := p.Pid + pgid, err := unix.Getpgid(pid) + if err == nil { + pid = pgid * -1 + } + unix.Kill(pid, syscall.SIGSTOP) } func notifyOnCont(resizeChan chan<- os.Signal) {