util/ProcessLogger.py
changeset 1539 8e5c03798abc
parent 1519 f7ac0d11118e
child 1571 486f94a8032c
equal deleted inserted replaced
1538:ee1715e94136 1539:8e5c03798abc
   168     def log_the_end(self,ecode,pid):
   168     def log_the_end(self,ecode,pid):
   169         self.logger.write(self.Command_str + "\n")
   169         self.logger.write(self.Command_str + "\n")
   170         self.logger.write_warning(_("exited with status %s (pid %s)\n")%(str(ecode),str(pid)))
   170         self.logger.write_warning(_("exited with status %s (pid %s)\n")%(str(ecode),str(pid)))
   171 
   171 
   172     def finish(self, pid,ecode):
   172     def finish(self, pid,ecode):
       
   173         # avoid running function before start is finished        
   173         self.startsem.acquire()
   174         self.startsem.acquire()
   174         if self.timeout:
   175         if self.timeout:
   175             self.timeout.cancel()
   176             self.timeout.cancel()
   176         self.exitcode = ecode
   177         self.exitcode = ecode
   177         if self.exitcode != 0:
   178         if self.exitcode != 0:
   180             self.finish_callback(self,ecode,pid)
   181             self.finish_callback(self,ecode,pid)
   181         self.errt.join()
   182         self.errt.join()
   182         self.finishsem.release()
   183         self.finishsem.release()
   183 
   184 
   184     def kill(self,gently=True):
   185     def kill(self,gently=True):
   185         self.startsem.acquire()        
   186         # avoid running kill before start is finished
       
   187         self.startsem.acquire()
       
   188         self.startsem.release()
       
   189         
   186         self.outt.killed = True
   190         self.outt.killed = True
   187         self.errt.killed = True
   191         self.errt.killed = True
   188         if wx.Platform == '__WXMSW__':
   192         if wx.Platform == '__WXMSW__':
   189             PROCESS_TERMINATE = 1
   193             PROCESS_TERMINATE = 1
   190             handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, self.Proc.pid)
   194             handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, self.Proc.pid)