// dupSlave dup2 the pty slave's fd into stdout and stdin and ensures that // the slave's fd is 0, or stdin func dupSlave(slave *os.File) error { if slave.Fd() != 0 { return fmt.Errorf("slave fd not 0 %d", slave.Fd()) } if err := system.Dup2(slave.Fd(), 1); err != nil { return err } if err := system.Dup2(slave.Fd(), 2); err != nil { return err } return nil }
// dupSlave dup2 the pty slave's fd into stdout and stdin and ensures that // the slave's fd is 0, or stdin func dupSlave(slave *os.File) error { if err := system.Dup2(slave.Fd(), 0); err != nil { return err } if err := system.Dup2(slave.Fd(), 1); err != nil { return err } if err := system.Dup2(slave.Fd(), 2); err != nil { return err } return nil }
func OpenAndDup(consolePath string) error { slave, err := system.OpenTerminal(consolePath, syscall.O_RDWR) if err != nil { return fmt.Errorf("open terminal %s", err) } if err := system.Dup2(slave.Fd(), 0); err != nil { return err } if err := system.Dup2(slave.Fd(), 1); err != nil { return err } return system.Dup2(slave.Fd(), 2) }