X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=bin%2FkillSalomeWithPort.py;h=725ee246e4549766320fb0989069860ca7f544dc;hb=0e0fd9ed25fa80d505c2dcdddb80a4250b66bafa;hp=bcc1480044247551491ab4c1dc1c668b3948643d;hpb=ee84dc2b25345766bbab2505870804e781fce00a;p=modules%2Fkernel.git diff --git a/bin/killSalomeWithPort.py b/bin/killSalomeWithPort.py index bcc148004..725ee246e 100755 --- a/bin/killSalomeWithPort.py +++ b/bin/killSalomeWithPort.py @@ -1,6 +1,6 @@ #! /usr/bin/env python # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -32,7 +32,7 @@ # import os, sys, pickle, signal, commands,glob -from launchConfigureParser import verbose +from salome_utils import verbose import Utils_Identity import salome_utils @@ -86,7 +86,7 @@ def appliCleanOmniOrbConfig(port): - ${HOME}/${APPLI}/USERS/.omniORB_${USER}_last.cfg the last is removed only if the link points to the first file. """ - from salome_utils import generateFileName + from salome_utils import generateFileName, getUserName home = os.getenv("HOME") appli = os.getenv("APPLI") if appli is None: @@ -121,7 +121,7 @@ def appliCleanOmniOrbConfig(port): #try to relink last.cfg to an existing config file if any files = glob.glob(os.path.join(os.environ["HOME"],Utils_Identity.getapplipath(), - "USERS",".omniORB_"+salome_utils.getUserName()+"_*.cfg")) + "USERS",".omniORB_"+getUserName()+"_*.cfg")) current_config=None current=0 for f in files: @@ -137,6 +137,45 @@ def appliCleanOmniOrbConfig(port): ########## kills all salome processes with the given port ########## +def shutdownMyPort(port): + """ + Shutdown SALOME session running on the specified port. + Parameters: + - port - port number + """ + from salome_utils import generateFileName + + # set OMNIORB_CONFIG variable to the proper file + home = os.getenv("HOME") + appli = os.getenv("APPLI") + kwargs = {} + if appli is not None: + home = os.path.join(home, appli,"USERS") + kwargs["with_username"]=True + pass + omniorb_config = generateFileName(home, prefix="omniORB", + extension="cfg", + hidden=True, + with_hostname=True, + with_port=port, + **kwargs) + os.environ['OMNIORB_CONFIG'] = omniorb_config + + # give the chance to the servers to shutdown properly + try: + import time + import salome_kernel + orb, lcc, naming_service, cm = salome_kernel.salome_kernel_init() + # shutdown all + lcc.shutdownServers() + # give some time to shutdown to complete + time.sleep(1) + # shutdown omniNames and notifd + salome_kernel.LifeCycleCORBA.killOmniNames() + except: + pass + pass + def killMyPort(port): """ Kill SALOME session running on the specified port. @@ -144,6 +183,12 @@ def killMyPort(port): - port - port number """ from salome_utils import getShortHostName, getHostName + + # try to shutdown session nomally + import threading, time + threading.Thread(target=shutdownMyPort, args=(port,)).start() + time.sleep(3) # wait a little, then kill processes (should be done if shutdown procedure hangs up) + # new-style dot-prefixed pidict file filedict = getPiDict(port, hidden=True) # provide compatibility with old-style pidict file (not dot-prefixed)