57 if self.callback : self.callback(outchunk) |
57 if self.callback : self.callback(outchunk) |
58 while outchunk != '' and not self.killed : |
58 while outchunk != '' and not self.killed : |
59 outchunk = self.fd.readline() |
59 outchunk = self.fd.readline() |
60 if self.endcallback: |
60 if self.endcallback: |
61 try: |
61 try: |
62 err = self.Proc.wait() |
62 err = self.Proc.wait() |
63 except: |
63 except: |
64 err = self.retval |
64 err = self.retval |
65 self.finished = True |
65 self.finished = True |
66 wx.CallAfter(self.endcallback, self.Proc.pid, err) |
66 wx.CallAfter(self.endcallback, self.Proc.pid, err) |
67 |
67 |
75 word = word.strip() |
75 word = word.strip() |
76 if len(word) > 0: |
76 if len(word) > 0: |
77 self.Command.extend(word.split()) |
77 self.Command.extend(word.split()) |
78 else: |
78 else: |
79 self.Command.append(word) |
79 self.Command.append(word) |
80 |
80 |
81 self.finish_callback = finish_callback |
81 self.finish_callback = finish_callback |
82 self.no_stdout = no_stdout |
82 self.no_stdout = no_stdout |
83 self.no_stderr = no_stderr |
83 self.no_stderr = no_stderr |
84 self.startupinfo = None |
84 self.startupinfo = None |
85 self.errlen = 0 |
85 self.errlen = 0 |
128 self.errdata += v |
126 self.errdata += v |
129 self.errlen += 1 |
127 self.errlen += 1 |
130 if not self.no_stderr: |
128 if not self.no_stderr: |
131 wx.CallAfter(self.logger.write_warning,v) |
129 wx.CallAfter(self.logger.write_warning,v) |
132 |
130 |
|
131 def log_the_end(self,ecode,pid): |
|
132 self.logger.write(self.Command_str + "\n") |
|
133 self.logger.write_warning("exited with status %s (pid %s)\n"%(str(ecode),str(pid))) |
|
134 |
133 def finish(self, pid,ecode): |
135 def finish(self, pid,ecode): |
134 self.finished = True |
136 self.finished = True |
135 self.exitcode = ecode |
137 self.exitcode = ecode |
136 if self.exitcode != 0: |
138 if self.exitcode != 0: |
137 self.logger.write(self.Command_str + "\n") |
139 wx.CallAfter(self.log_the_end,ecode,pid) |
138 self.logger.write_warning("exited with status %s (pid %s)\n"%(str(ecode),str(pid))) |
|
139 if self.finish_callback is not None: |
140 if self.finish_callback is not None: |
140 self.finish_callback(self,ecode,pid) |
141 self.finish_callback(self,ecode,pid) |
141 |
142 |
142 def kill(self,signal=SIGTERM): |
143 def kill(self,signal=SIGTERM): |
143 self.outt.killed = True |
144 self.outt.killed = True |
150 else: |
151 else: |
151 try: |
152 try: |
152 os.kill(self.Proc.pid, signal) |
153 os.kill(self.Proc.pid, signal) |
153 except: |
154 except: |
154 pass |
155 pass |
|
156 self.outt.join() |
|
157 self.errt.join() |
155 |
158 |
156 def spin(self, timeout=None, out_limit=None, err_limit=None, keyword = None, kill_it = True): |
159 def spin(self, timeout=None, out_limit=None, err_limit=None, keyword = None, kill_it = True): |
157 count = 0 |
160 count = 0 |
158 while not self.finished: |
161 while not self.finished: |
159 if err_limit and self.errlen > err_limit: |
162 if err_limit and self.errlen > err_limit: |