Salome HOME
A service to generate artificialy SIGSEGV to test robustness of high level layers
[modules/kernel.git] / bin / addToKillList.py
index ca2abd93412ec2f67940379ce0158d5314c564f4..840763306d6ef3f6f220cc9792d0956cf4ca08bd 100755 (executable)
@@ -1,6 +1,6 @@
-#! /usr/bin/env python
+#! /usr/bin/env python3
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2022  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
@@ -34,7 +34,7 @@ def findFileDict():
     """
     from salome_utils import getPortNumber
     port = getPortNumber()
-    if verbose(): print "myport = ", port
+    if verbose(): print("myport = ", port)
     return port
 
 def addToKillList(command_pid, command, port=None):
@@ -50,17 +50,18 @@ def addToKillList(command_pid, command, port=None):
     from killSalomeWithPort import getPiDict
     if port is None: port=findFileDict()
     filedict = getPiDict(port)
+    #filedict = getPiDict(port).encode()
 
     try:
-        with open(filedict, 'r') as fpid:
+        with open(filedict, 'rb') as fpid:
             process_ids=pickle.load(fpid)
-    except:
+    except Exception:
         process_ids=[]
         pass
     # check if PID is already in dictionary
     already_in=False
     for process_id in process_ids:
-        for pid in process_id.keys():
+        for pid in process_id:
             if int(pid) == int(command_pid):
                 already_in=True
                 break
@@ -71,17 +72,19 @@ def addToKillList(command_pid, command, port=None):
     # add process to the dictionary
     if not already_in:
         import types
-        if type(command) == types.ListType: command=" ".join([str(c) for c in command])
+        if isinstance(command, list): command=" ".join([str(c) for c in command])
         command=command.split()[0]
         try:
-            if verbose(): print "addToKillList: %s : %s" % ( str(command_pid), command )
+            if verbose(): print("addToKillList: %s : %s" % ( str(command_pid), command ))
             process_ids.append({int(command_pid): [command]})
             dir = os.path.dirname(filedict)
-            if not os.path.exists(dir): os.makedirs(dir, 0777)
-            with open(filedict,'w') as fpid:
+            if not os.path.exists(dir):
+                from salome_utils import makeDir
+                makeDir(dir)
+            with open(filedict,'wb') as fpid:
                 pickle.dump(process_ids, fpid)
-        except:
-            if verbose(): print "addToKillList: can not add command %s : %s to the kill list" % ( str(command_pid), command )
+        except Exception:
+            if verbose(): print("addToKillList: can not add command %s : %s to the kill list" % ( str(command_pid), command ))
             pass
         pass
     pass
@@ -102,27 +105,30 @@ def killList(port=None):
     if not os.path.exists(filedict): filedict = getPiDict(port, hidden=False)
 
     try:
-        with open(filedict, 'r') as fpid:
+        with open(filedict, 'rb') as fpid:
             process_ids=pickle.load(fpid)
-    except:
+    except Exception:
         process_ids=[]
         pass
     # kill processes
     for process_id in process_ids:
-        #print process_id
-        for pid, cmd in process_id.items():
+        # print(process_id)
+        for pid, cmd in list(process_id.items()):
             try:
                 os.kill(int(pid),signal.SIGKILL)
-            except:
-                print "  ------------------ process %s : %s inexistant"% (pid, cmd[0])
+            except Exception:
+                print("  ------------------ process %s : %s inexistant"% (pid, cmd[0]))
                 pass
             pass
         pass
     # remove processes dictionary file
-    os.remove(filedict)
+    if os.path.exists(filedict):
+        os.remove(filedict)
     pass
 
 if __name__ == "__main__":
-    if verbose(): print sys.argv
+    if verbose(): print(sys.argv[1:])
+    if len(sys.argv) < 3:
+        sys.exit(-1)
     addToKillList(sys.argv[1], sys.argv[2])
     pass