github.com/bir3/gocompiler@v0.9.2202/src/internal/testpty/pty_darwin.go (about) 1 // Copyright 2017 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package testpty 6 7 import ( 8 "github.com/bir3/gocompiler/src/xvendor/golang.org/x/sys/unix" 9 "os" 10 "syscall" 11 ) 12 13 func open() (pty *os.File, processTTY string, err error) { 14 m, err := unix.PosixOpenpt(syscall.O_RDWR) 15 if err != nil { 16 return nil, "", ptyError("posix_openpt", err) 17 } 18 if err := unix.Grantpt(m); err != nil { 19 syscall.Close(m) 20 return nil, "", ptyError("grantpt", err) 21 } 22 if err := unix.Unlockpt(m); err != nil { 23 syscall.Close(m) 24 return nil, "", ptyError("unlockpt", err) 25 } 26 processTTY, err = unix.Ptsname(m) 27 if err != nil { 28 syscall.Close(m) 29 return nil, "", ptyError("ptsname", err) 30 } 31 return os.NewFile(uintptr(m), "pty"), processTTY, nil 32 }