Ejemplo n.º 1
0
 def __init__(self, command, mode):
     self.mode = mode
     self.result = None
     self.r, self.w, err = Pipe()
     if err:
         raise OSError(err.Error())
     attr = ProcAttr.new()
     # Create a slice using a reflect.Type returned by ToNative.
     # TODO: There should be a cleaner way to create slices in Python.
     files_type = ToNative(__frame__(), attr.Files).Type()
     files = MakeSlice(files_type, 3, 3).Interface()
     if self.mode == 'r':
         fd = self.r.Fd()
         files[0], files[1], files[2] = Stdin, self.w, Stderr
     elif self.mode == 'w':
         fd = self.w.Fd()
         files[0], files[1], files[2] = self.r, Stdout, Stderr
     else:
         raise ValueError('invalid popen mode: %r', self.mode)
     attr.Files = files
     # TODO: There should be a cleaner way to create slices in Python.
     args_type = ToNative(__frame__(), StartProcess).Type().In(1)
     args = MakeSlice(args_type, 3, 3).Interface()
     shell = environ['SHELL']
     args[0] = shell
     args[1] = '-c'
     args[2] = command
     self.proc, err = StartProcess(shell, args, attr)
     if err:
         raise OSError(err.Error())
     self.wg = WaitGroup.new()
     self.wg.Add(1)
     StartThread(self._thread_func)
     self.file = NewFileFromFD(fd, self.close)
Ejemplo n.º 2
0
from __go__.os import Args, Stdin, Stdout, Stderr
from __go__.grumpy import SysModules, MaxInt, NewFileFromFD  # pylint: disable=g-multiple-import
from __go__.runtime import Version

argv = []
for arg in Args:
    argv.append(arg)

goversion = Version()
maxint = MaxInt
modules = SysModules
py3kwarning = False
warnoptions = []

stdin = NewFileFromFD(Stdin.Fd())
stdout = NewFileFromFD(Stdout.Fd())
stderr = NewFileFromFD(Stderr.Fd())


class _Flags(object):
    """Container class for sys.flags."""
    debug = 0
    py3k_warning = 0
    division_warning = 0
    division_new = 0
    inspect = 0
    interactive = 0
    optimize = 0
    dont_write_bytecode = 0
    no_user_site = 0
Ejemplo n.º 3
0
def fdopen(fd, mode='r'):  # pylint: disable=unused-argument
  # Ensure this is a valid file descriptor to match CPython behavior.
  _, _, err = Syscall(SYS_FCNTL, fd, F_GETFD, 0)
  if err:
    raise OSError(err.Error())
  return NewFileFromFD(fd)