openpty() -> (master_fd, slave_fd) Open a pty master/slave pair, using os.openpty() if possible.
()
| 24 | CHILD = 0 |
| 25 | |
| 26 | def openpty(): |
| 27 | """openpty() -> (master_fd, slave_fd) |
| 28 | Open a pty master/slave pair, using os.openpty() if possible.""" |
| 29 | |
| 30 | try: |
| 31 | return os.openpty() |
| 32 | except (AttributeError, OSError): |
| 33 | pass |
| 34 | master_fd, slave_name = _open_terminal() |
| 35 | |
| 36 | slave_fd = os.open(slave_name, os.O_RDWR) |
| 37 | try: |
| 38 | from fcntl import ioctl, I_PUSH |
| 39 | except ImportError: |
| 40 | return master_fd, slave_fd |
| 41 | try: |
| 42 | ioctl(slave_fd, I_PUSH, "ptem") |
| 43 | ioctl(slave_fd, I_PUSH, "ldterm") |
| 44 | except OSError: |
| 45 | pass |
| 46 | return master_fd, slave_fd |
| 47 | |
| 48 | def _open_terminal(): |
| 49 | """Open pty master and return (master_fd, tty_name).""" |
no test coverage detected
searching dependent graphs…