//go:build !windows // +build !windows package pty import ( "os" "os/exec" "syscall" ) // StartWithSize assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, // and c.Stderr, calls c.Start, and returns the File of the tty's // corresponding pty. // // This will resize the pty to the specified size before starting the command. // Starts the process in a new session and sets the controlling terminal. func StartWithSize(cmd *exec.Cmd, ws *Winsize) (*os.File, error) { if cmd.SysProcAttr == nil { cmd.SysProcAttr = &syscall.SysProcAttr{} } cmd.SysProcAttr.Setsid = true cmd.SysProcAttr.Setctty = true return StartWithAttrs(cmd, ws, cmd.SysProcAttr) }