Issue 36603: should pty.openpty() set pty/tty inheritable? (original) (raw)

pty.openpty(), on systems with a working os.openpty() / openpty(3) executes:

if (openpty(&master_fd, &slave_fd, NULL, NULL, NULL) != 0)
    goto posix_error;
if (_Py_set_inheritable(master_fd, 0, NULL) < 0)
    goto error;
if (_Py_set_inheritable(slave_fd, 0, NULL) < 0)
    goto error;

where as on systems where this is fails it instead executes:

master_fd, slave_name = _open_terminal()
slave_fd = slave_open(slave_name)
    i.e., result = os.open(tty_name, os.O_RDWR)
return master_fd, slave_fd

where os.open() was "Changed in version 3.4: The new file descriptor is now non-inheritable."

(personally I'd deprecate pty.openpty(), but that is just me)