- return
-
-def checkUnkilledProcess():
- #check processes in system after kill
- from salome_utils import getUserName
- user = getUserName()
- processes = dict()
-
- if sys.platform != 'win32':
-
- def _getDictfromOutput(_output, _dic, _cond = None):
- _pids = dict(zip(list(map(int, _output[::2])), _output[1::2]))
- if _cond:
- _pids = {pid:cmd for pid,cmd in _pids.items() if re.match(_cond, cmd)}
- _dic.update(_pids)
-
- # 1. SALOME servers plus omniNames
- cmd = 'ps --noheading -U {user} -o pid,cmd | awk \'{{printf("%s %s\\n", $1, $2)}}\''.format(user=user)
- _getDictfromOutput(subprocess.getoutput(cmd).split(), processes, '^(SALOME_|omniNames)')
- # 2. ghs3d
- cmd = 'ps -fea | grep \'{user}\' | grep \'ghs3d\' | grep \'f /tmp/GHS3D_\' | grep -v \'grep\' | awk \'{{printf("%s %s\\n", $2, $8)}}\''.format(user=user)
- _getDictfromOutput(subprocess.getoutput(cmd).split(), processes)
- # 3. ompi-server
- cmd = 'ps -fea | grep \'{user}\' | grep \'ompi-server\' | grep -v \'grep\' | awk \'{{printf("%s %s\\n", $2, $8)}}\''.format(user=user)
- _getDictfromOutput(subprocess.getoutput(cmd).split(), processes)
- else:
- cmd = 'tasklist /fo csv | findstr /i "SALOME_ omniNames"'
- prc = subprocess.getoutput(cmd)
- try:
- prc = prc.split()
- prc = [prc[i].split(',') for i in range(0, len(prc)) if i % 2 == 0]
- prc = dict([(int(prc[j][1].replace('"', '')), prc[j][0].replace('"', '')) for j in range(0, len(prc))])
- processes.update(prc)
- except:
- pass
+
+def __checkUnkilledProcesses():
+ '''
+ Check all unkilled SALOME processes (internal).
+ :return: list of unkilled processes
+ '''
+ def _checkUserName(_process):
+ # The following is a workaround for Windows on which
+ # psutil.Process().username() returns 'usergroup' + 'username'
+ return getUserName() == _process.username()
+
+ def _getDictfromOutput(_processes, _wildcard=None):
+ for _process in psutil.process_iter(['name', 'username']):
+ with suppress(psutil.AccessDenied):
+ if _checkUserName(_process) and re.match(_wildcard, _process.info['name']):
+ _processes.append(_process)
+
+ processes = list()
+ _getDictfromOutput(processes, '(SALOME_*)')
+ _getDictfromOutput(processes, '(omniNames)')
+ _getDictfromOutput(processes, '(ghs3d)')
+ _getDictfromOutput(processes, '(ompi-server)')
+