docs: def close(self, terminate=True, kill=False):
          '''
          Close the communication with the terminal's child.
          If ``terminate`` is ``True`` then additionally try to terminate the
          terminal, and if ``kill`` is also ``True``, kill the terminal if
          terminating it was not enough.
          '''
          if not self.closed:
              if self.child_fd is not None:
                  os.close(self.child_fd)
                  self.child_fd = None
              if self.child_fde is not None:
                  os.close(self.child_fde)
                  self.child_fde = None
              time.sleep(0.1)
              if terminate:
                  if not self.terminate(kill):
                      raise TerminalException('Failed to terminate child process.')
              self.closed = True