fix: TTY being GC'd before command is ran (#412)

* fix: TTY being GC'd before command is ran

* Fix reference to tty
This commit is contained in:
Kyle Carberry 2022-03-08 11:48:58 -06:00 committed by GitHub
parent d37df894a4
commit 45daa44a99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 0 deletions

View File

@ -6,6 +6,7 @@ package pty
import (
"os"
"os/exec"
"runtime"
"syscall"
"github.com/creack/pty"
@ -29,6 +30,13 @@ func startPty(cmd *exec.Cmd) (PTY, *os.Process, error) {
_ = ptty.Close()
return nil, nil, xerrors.Errorf("start: %w", err)
}
go func() {
// The GC can garbage collect the TTY FD before the command
// has finished running. See:
// https://github.com/creack/pty/issues/127#issuecomment-932764012
_ = cmd.Wait()
runtime.KeepAlive(ptty)
}()
oPty := &otherPty{
pty: ptty,
tty: tty,