util/ProcessLogger.py
changeset 1742 92932cd370a4
parent 1741 dd94b9a68c61
child 1744 69dfdb26f600
equal deleted inserted replaced
1741:dd94b9a68c61 1742:92932cd370a4
   113         self.kill_it = kill_it
   113         self.kill_it = kill_it
   114         self.startsem = Semaphore(0)
   114         self.startsem = Semaphore(0)
   115         self.finishsem = Semaphore(0)
   115         self.finishsem = Semaphore(0)
   116         self.endlock = Lock()
   116         self.endlock = Lock()
   117 
   117 
   118         popenargs= {
   118         popenargs = {
   119                "cwd":    os.getcwd() if cwd is None else cwd,
   119                "cwd":    os.getcwd() if cwd is None else cwd,
   120                "stdin":  subprocess.PIPE,
   120                "stdin":  subprocess.PIPE,
   121                "stdout": subprocess.PIPE,
   121                "stdout": subprocess.PIPE,
   122                "stderr": subprocess.PIPE
   122                "stderr": subprocess.PIPE
   123         }
   123         }
   154     def output(self, v):
   154     def output(self, v):
   155         self.outdata.append(v)
   155         self.outdata.append(v)
   156         self.outlen += 1
   156         self.outlen += 1
   157         if not self.no_stdout:
   157         if not self.no_stdout:
   158             self.logger.write(v)
   158             self.logger.write(v)
   159         if (self.keyword and v.find(self.keyword)!=-1) or (self.outlimit and self.outlen > self.outlimit):
   159         if (self.keyword and v.find(self.keyword) != -1) or (self.outlimit and self.outlen > self.outlimit):
   160             self.endlog()
   160             self.endlog()
   161 
   161 
   162     def errors(self, v):
   162     def errors(self, v):
   163         self.errdata.append(v)
   163         self.errdata.append(v)
   164         self.errlen += 1
   164         self.errlen += 1
   196             handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, self.Proc.pid)
   196             handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, self.Proc.pid)
   197             ctypes.windll.kernel32.TerminateProcess(handle, -1)
   197             ctypes.windll.kernel32.TerminateProcess(handle, -1)
   198             ctypes.windll.kernel32.CloseHandle(handle)
   198             ctypes.windll.kernel32.CloseHandle(handle)
   199         else:
   199         else:
   200             if gently:
   200             if gently:
   201                 sig=SIGTERM
   201                 sig = SIGTERM
   202             else:
   202             else:
   203                 sig=SIGKILL
   203                 sig = SIGKILL
   204             try:
   204             try:
   205                 os.kill(self.Proc.pid, sig)
   205                 os.kill(self.Proc.pid, sig)
   206             except:
   206             except:
   207                 pass
   207                 pass
   208         self.outt.join()
   208         self.outt.join()