code: def read(self, size=1024):
          
          try:
              s = self.fileobj.read1(size)
          except (OSError, IOError) as err:
              if err.args[0] == errno.EIO:
                  # Linux-style EOF
                  self.flag_eof = True
                  raise EOFError('End Of File (EOF). Exception style platform.')
              raise
          if s == b'':
              # BSD-style EOF (also appears to work on recent Solaris (OpenIndiana))
              self.flag_eof = True
              raise EOFError('End Of File (EOF). Empty string style platform.')
  
          return s
docs: Read and return at most ``size`` bytes from the pty.
  
          Can block if there is nothing to read. Raises :exc:`EOFError` if the
          terminal was closed.
          
          Unlike Pexpect's ``read_nonblocking`` method, this doesn't try to deal
          with the vagaries of EOF on platforms that do strange things, like IRIX
          or older Solaris systems. It handles the errno=EIO pattern used on
          Linux, and the empty-string return used on BSD platforms and (seemingly)
          on recent Solaris.