예제 #1
0
 def terminate(self):
     if self.returncode is None:
         try:
             _winapi.TerminateProcess(int(self._handle), TERMINATE)
         except OSError:
             if self.wait(timeout=1.0) is None:
                 raise
예제 #2
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
예제 #3
0
 def kill(self):
     if sys.platform == 'win32':
         import _winapi
         handle = _winapi.OpenProcess(1, False, self._process.pid)
         _winapi.TerminateProcess(handle, -1)
         _winapi.CloseHandle(handle)
     else:
         os.kill(self.process.pid, signal.SIGKILL)