def METHOD_NAME():
    """fork() -> (pid, master_fd)
    Fork and make the child a session leader with a controlling terminal."""
    try:
        pid, fd = os.forkpty()
    except (AttributeError, OSError):
        pass
    else:
        if pid == CHILD:
            try:
                os.setsid()
            except OSError:
                # os.forkpty() already set us session leader
                pass
        return pid, fd
    master_fd, slave_fd = openpty()
    pid = os.METHOD_NAME()
    if pid == CHILD:
        # Establish a new session.
        os.setsid()
        os.close(master_fd)
        # Slave becomes stdin/stdout/stderr of child.
        os.dup2(slave_fd, STDIN_FILENO)
        os.dup2(slave_fd, STDOUT_FILENO)
        os.dup2(slave_fd, STDERR_FILENO)
        if slave_fd > STDERR_FILENO:
            os.close(slave_fd)
        # Explicitly open the tty to make it become a controlling tty.
        tmp_fd = os.open(os.ttyname(STDOUT_FILENO), os.O_RDWR)
        os.close(tmp_fd)
    else:
        os.close(slave_fd)
    # Parent and child process.
    return pid, master_fd