-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
HOSTFILETMP=0
unset pid
+unset foreground ; foreground=0
+
+trapped_signals="HUP INT QUIT ILL ABRT SEGV FPE ALRM TERM USR1 USR2 BUS"
smpirun_cleanup()
{
}
smpirun_trap() {
+ local sig
+ sig="$1"
+
+ # Cleanup and kill the child process:
smpirun_cleanup
if ! [ -z "$pid" ]; then
kill -TERM $pid
fi
unset pid
- trap - HUP INT QUIT ILL ABRT SEGV FPE ALRM TERM USR1 USR2 BUS
+
+ # Raise the same signal again (remove the traps first):
+ trap - $trapped_signals
+ kill -$sig $$
+
+ # This should never happen:
+ kill -ABRT $$
kill -TERM $$
- exit 128
}
-trap smpirun_trap HUP INT QUIT ILL ABRT SEGV FPE ALRM TERM USR1 USR2 BUS
+for s in $trapped_signals; do
+ trap "smpirun_trap $s" $s
+done
while true; do
case "$1" in
done
shift 1
;;
+ "-foreground")
+ foreground=1
+ shift 1
+ ;;
*)
break
;;
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