Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
smpirun: Option to run the child in foreground
[simgrid.git] / src / smpi / smpirun.in
index 18a29d8..f27daa8 100755 (executable)
@@ -45,7 +45,11 @@ Options:
   -trace-viva                # generate configuration for Viva's GraphView
   -trace-file <tracefile>    # name of the tracefile (simgrid_smpi.trace)
   -ext <value>               # additional parameter (reserved)
-  
+  -foreground                # run the child process in the foreground:
+                             # - it can access the terminal;
+                             # - but we cannot stop it when we receive a signal.
+                             # This is useful with -wrapper "gdb --args".
+
   -version                   # Displays the SimGrid version (human readable)
   -git-version               # Displays the git hash of SimGrid
 
@@ -68,6 +72,7 @@ HOSTFILE=""
 HOSTFILETMP=0
 
 unset pid
+unset foreground ; foreground=0
 
 trapped_signals="HUP INT QUIT ILL ABRT SEGV FPE ALRM TERM USR1 USR2 BUS"
 
@@ -240,6 +245,10 @@ while true; do
             done
             shift 1
             ;;
+        "-foreground")
+            foreground=1
+            shift 1
+            ;;
         *)
             break
             ;;
@@ -508,11 +517,16 @@ if [ -n "${KEEP}" ] ; then
         echo "Generated unrolled hostfile ${UNROLLEDHOSTFILE} keeped." 
     fi
 fi
-${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP} &
-pid=$!
-wait $pid
-status=$?
-pid=""
+if [ "$foreground" = 1 ]; then
+  ${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP}
+  status=$?
+else
+  ${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP} &
+  pid=$!
+  wait $pid
+  status=$?
+  pid=""
+fi
 
 smpirun_cleanup