pty_linux.go 581 B

12345678910111213141516171819202122232425262728293031
  1. package termios
  2. import (
  3. "fmt"
  4. "unsafe"
  5. "golang.org/x/sys/unix"
  6. )
  7. func open_pty_master() (uintptr, error) {
  8. return open_device("/dev/ptmx")
  9. }
  10. func Ptsname(fd uintptr) (string, error) {
  11. var n uintptr
  12. err := ioctl(fd, unix.TIOCGPTN, uintptr(unsafe.Pointer(&n)))
  13. if err != nil {
  14. return "", err
  15. }
  16. return fmt.Sprintf("/dev/pts/%d", n), nil
  17. }
  18. func grantpt(fd uintptr) error {
  19. var n uintptr
  20. return ioctl(fd, unix.TIOCGPTN, uintptr(unsafe.Pointer(&n)))
  21. }
  22. func unlockpt(fd uintptr) error {
  23. var n uintptr
  24. return ioctl(fd, unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&n)))
  25. }