--- a/wxPopen.py Sat May 24 15:51:11 2008 +0200
+++ b/wxPopen.py Sat May 24 15:55:19 2008 +0200
@@ -28,6 +28,7 @@
import subprocess, ctypes
class outputThread(threading.Thread):
@@ -64,7 +65,16 @@
def __init__(self, logger, Command, finish_callback=None, no_stdout=False, no_stderr=False, no_gui=True):
+ self.Command_str = Command + for i,word in enumerate(Command.replace("'",'"').split('"')): + self.Command.extend(word.split()) + self.Command.append(word) self.finish_callback = finish_callback
self.no_stdout = no_stdout
self.no_stderr = no_stderr
@@ -86,7 +96,7 @@
self.startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
popenargs["startupinfo"] = self.startupinfo
elif wx.Platform == '__WXGTK__':
- popenargs["shell"] = True
+ popenargs["shell"] = False #True self.Proc = subprocess.Popen( self.Command, **popenargs )
@@ -121,7 +131,7 @@
- self.logger.write(self.Command + "\n")
+ self.logger.write(self.Command_str + "\n") self.logger.write_warning("exited with status %s (pid %s)\n"%(str(ecode),str(pid)))
if self.finish_callback is not None:
self.finish_callback(self,ecode,pid)
@@ -135,7 +145,10 @@
ctypes.windll.kernel32.TerminateProcess(handle, -1)
ctypes.windll.kernel32.CloseHandle(handle)
+ os.kill(self.Proc.pid, signal.SIGTERM) def spin(self, timeout=None, out_limit=None, err_limit=None, keyword = None, kill_it = True):