X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=bin%2Fsalome_utils.py;h=4f4936f97cf96b99315d7783f9959ebe43a35fc5;hb=e72332cd1cce863d7efbdecfb2055b8d9ee0630f;hp=186ed8da2459716f3d031b4452a18db5423ec8d0;hpb=6ce715f67787a38ce287c7611205c64c4974ba67;p=modules%2Fkernel.git diff --git a/bin/salome_utils.py b/bin/salome_utils.py index 186ed8da2..4f4936f97 100644 --- a/bin/salome_utils.py +++ b/bin/salome_utils.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -148,7 +148,6 @@ def getHostName(): 3. if fails, try HOST environment variable 4. if fails, return 'unknown' as default host name """ - import os try: import socket host = socket.gethostname() @@ -158,6 +157,11 @@ def getHostName(): if not host: host = os.getenv("HOSTNAME") if not host: host = os.getenv("HOST") if not host: host = "unknown" # 'unknown' is default host name + try: + socket.gethostbyname(host) + except: + host = "localhost" + pass return host # --- @@ -486,9 +490,17 @@ def setVerbose(level): # -- import signal -def killpid(pid, sig = signal.SIGKILL): +def killpid(pid, sig = 9): """ - Try to kill process by pid. + Send signal sig to the process by pid. + + Parameters: + - pid : PID of process + - sig : signal for sending + Possible values of signals: + 9 means kill the process + 0 only check existing of the process + NOTE: Other values are not processed on Windows Returns: 1 Success 0 Fail, no such process @@ -497,15 +509,28 @@ def killpid(pid, sig = signal.SIGKILL): """ if not pid: return import os, sys - if verbose(): print "######## killpid pid = ", pid + if sig != 0: + if verbose(): print "######## killpid pid = ", pid try: if sys.platform == "win32": import ctypes - handle = ctypes.windll.kernel32.OpenProcess(1, False, int(pid)) - ret = ctypes.windll.kernel32.TerminateProcess(handle, -1) - ctypes.windll.kernel32.CloseHandle(handle) + if sig == 0: + # PROCESS_QUERY_INFORMATION (0x0400) Required to retrieve certain information about a process + handle = ctypes.windll.kernel32.OpenProcess(0x0400, False, int(pid)) + if handle: + ret = 1 + ctypes.windll.kernel32.CloseHandle(handle) + else: + ret = 0 + if sig == 9: + # PROCESS_TERMINATE (0x0001) Required to terminate a process using TerminateProcess. + handle = ctypes.windll.kernel32.OpenProcess(0x0001, False, int(pid)) + ret = ctypes.windll.kernel32.TerminateProcess(handle, -1) + ctypes.windll.kernel32.CloseHandle(handle) + pass pass else: + # Default: signal.SIGKILL = 9 os.kill(int(pid),sig) ret = 1 pass