code: def pty_make_controlling_tty(tty_fd):
      """This makes the pseudo-terminal the controlling tty. This should be
      more portable than the pty.fork() function. Specifically, this should
      work on Solaris."""
  
      child_name = os.ttyname(tty_fd)
  
      # Disconnect from controlling tty, if any.  Raises OSError of ENXIO
      # if there was no controlling tty to begin with, such as when
      # executed by a cron(1) job.
      try:
          fd = os.open("/dev/tty", os.O_RDWR | os.O_NOCTTY)
          os.close(fd)
      except OSError as err:
          if err.errno != errno.ENXIO:
              raise
  
      os.setsid()
  
      # Verify we are disconnected from controlling tty by attempting to open
      # it again.  We expect that OSError of ENXIO should always be raised.
      try:
          fd = os.open("/dev/tty", os.O_RDWR | os.O_NOCTTY)
          os.close(fd)
          raise PtyProcessError(
              "OSError of errno.ENXIO should be raised."
          )
      except OSError as err:
          if err.errno != errno.ENXIO:
              raise
  
      # Verify we can open child pty.
      fd = os.open(child_name, os.O_RDWR)
      os.close(fd)
  
      # Verify we now have a controlling tty.
      fd = os.open("/dev/tty", os.O_WRONLY)
      os.close(fd)
  
imports: import os
  import errno
  from pty import STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO, CHILD
  from .util import PtyProcessError
label_desc: Use image node_id 2 for calling a global function with example usage: pty_make_controlling_tty(tty_fd) without return types