Salome HOME
Fix the following problems:
[modules/kernel.git] / bin / salomeRunner.py
index c80c4f3164b2ece36bd755f268562ff7c2da4a37..aa1dee6cafbf41b3de61f3c98a7ac38dbec8eb35 100644 (file)
@@ -85,8 +85,8 @@ class SalomeRunner:
     # Run this module as a script, in order to use appropriate Python interpreter
     # according to current path (initialized from environment files).
     absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH','')
-    proc = subprocess.Popen(['python', absoluteAppliPath+'/bin/salome/salomeRunner.py', pickle.dumps(self),  pickle.dumps(args)], shell=False, close_fds=True)
-    proc.wait()
+    proc = subprocess.Popen(['python', os.path.join(absoluteAppliPath,"bin","salome","salomeRunner.py"), pickle.dumps(self),  pickle.dumps(args)], shell=False, close_fds=True)
+    proc.communicate()
   #
 
   """Append value to PATH environment variable"""
@@ -244,7 +244,8 @@ class SalomeRunner:
     scriptArgs = getScriptsAndArgs(args)
     command = formatScriptsAndArgs(scriptArgs)
     if command:
-      proc = subprocess.Popen(command, shell=True, close_fds=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+      command = command.split(' ')
+      proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
       return proc.communicate()
     else:
       absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH','')
@@ -264,8 +265,29 @@ class SalomeRunner:
   #
 
   def _killAll(self, args=[]):
-    from killSalome import killAllPorts
-    killAllPorts()
+    absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH','')
+    try:
+      import PortManager # mandatory
+      from multiprocessing import Process
+      from killSalomeWithPort import killMyPort
+      ports = PortManager.getBusyPorts()
+
+      if ports:
+        import tempfile
+        for port in ports:
+          with tempfile.NamedTemporaryFile():
+            p = Process(target = killMyPort, args=(port,))
+            p.start()
+            p.join()
+
+      p = Process(target = killMyPort, args=(2809,))
+      p.start()
+      p.join()
+    except ImportError:
+      from killSalome import killAllPorts
+      killAllPorts()
+      pass
+
   #
 
   def _showInfo(self, args=[]):