Salome HOME
[EDF29576] : destroy ior communication file
authorAnthony Geay <anthony.geay@edf.fr>
Thu, 29 Feb 2024 08:50:21 +0000 (09:50 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Thu, 29 Feb 2024 08:50:21 +0000 (09:50 +0100)
src/yacsloader/driver

index c1a71ca96f8561417f6716fb631bfd3441c1e9dd..6d2906204dfc197aea2554ea19ce3448babf8cb4 100644 (file)
@@ -24,6 +24,7 @@ import subprocess as sp
 import salome
 import SALOME_Embedded_NamingService_ClientPy
 import NamingService
+from SALOME_PyNode import FileDeleter
 
 import signal
 import os
@@ -32,10 +33,14 @@ proc = None
 ior_file = None
 
 def handler(signum, frame):
-  global proc
-  ns = SALOME_Embedded_NamingService_ClientPy.SALOME_Embedded_NamingService_ClientPy( NamingService.NamingService.LoadIORInFile( ior_file ) )
-  cm = ns.Resolve(salome.CM_NAME_IN_NS)
-  cm.ShutdownContainersNow()
+  global proc,ior_file
+  try:
+    ns = SALOME_Embedded_NamingService_ClientPy.SALOME_Embedded_NamingService_ClientPy( NamingService.NamingService.LoadIORInFile( ior_file.filename ) )
+    del ior_file
+    cm = ns.Resolve(salome.CM_NAME_IN_NS)
+    cm.ShutdownContainersNow()
+  except:
+    pass
   os.kill( proc.pid, signal.SIGKILL )
 
 if __name__ == "__main__":
@@ -44,8 +49,9 @@ if __name__ == "__main__":
   signal.signal(signal.SIGINT, handler)
   signal.signal(signal.SIGTERM, handler)
   with tempfile.NamedTemporaryFile(prefix="ior_driver_",suffix=".ior") as f:
-    ior_file = f.name
-  iorStuff = "{}={}".format( driver_internal.IOREntryInCMD, ior_file)
+    ior_file = FileDeleter( f.name )
+  iorStuff = "{}={}".format( driver_internal.IOREntryInCMD, ior_file.filename)
   argv = [elt for elt in sys.argv[1:] if elt != ""]
   proc = sp.Popen( ["python3",driver_internal.__file__] + [ iorStuff ] + argv  )
   proc.communicate()
+  del ior_file
\ No newline at end of file