Exemplo n.º 1
0
 def terminate(self):
     try:
         _winapi.TerminateProcess(self._handle, 1)
     except PermissionError:
         rc = _winapi.GetExitCodeProcess(self._handle)
         if rc == _winapi.STILL_ACTIVE:
             raise
         self.returncode = rc
Exemplo n.º 2
0
 def _wait_pid(self, blocking):
     assert self.__handle is not None
     if blocking:
         timeout = _winapi.INFINITE
     else:
         timeout = 0
     result = _winapi.WaitForSingleObject(self.__handle, timeout)
     if result != _winapi.WAIT_TIMEOUT:
         self.__result = _winapi.GetExitCodeProcess(self._handle)
 def wait(self, timeout=None):
     if self.returncode is None:
         if timeout is None:
             msecs = _winapi.INFINITE
         else:
             msecs = max(0, int(timeout * 1000 + 0.5))
         res = _winapi.WaitForSingleObject(int(self._handle), msecs)
         if res == _winapi.WAIT_OBJECT_0:
             code = _winapi.GetExitCodeProcess(self._handle)
             if code == TERMINATE:
                 code = -signal.SIGTERM
             self.returncode = code
     return self.returncode
Exemplo n.º 4
0
 def wait(self, timeout=None, endtime=None):
     if endtime is not None:
         timeout = self._remaining_time(endtime)
     if timeout is None:
         timeout_millis = _winapi.INFINITE
     else:
         timeout_millis = int(timeout*1000)
     if self.returncode is None:
         result = _winapi.WaitForSingleObject(self._handle, timeout_millis)
         if result == _winapi.WAIT_TIMEOUT:
             raise TimeoutExpired(self.args, timeout)
         self.returncode = _winapi.GetExitCodeProcess(self._handle)
     return self.returncode