EXTOPT=""
WRAPPER=""
HOSTFILE=""
+HOSTFILETMP=0
+
+unset pid
+
+smpirun_cleanup()
+{
+ if [ -z "${KEEP}" ] ; then
+ if [ -z "${PLATFORM}" -a -n "$PLATFORMTMP" ]; then
+ rm -f ${PLATFORMTMP}
+ PLATFORMTMP=""
+ fi
+ if [ ${HOSTFILETMP} = 1 -a -n "$HOSTFILE" ] ; then
+ rm -f ${HOSTFILE}
+ HOSTFILE=""
+ fi
+ if [ ${UNROLLEDHOSTFILETMP} = 1 -a -n "$UNROLLEDHOSTFILE" ] ; then
+ rm -f ${UNROLLEDHOSTFILE}
+ UNROLLEDHOSTFILE=""
+ fi
+ if [ -n ${APPLICATIONTMP} ]; then
+ rm -f ${APPLICATIONTMP}
+ APPLICATIONTMP=""
+ fi
+ fi
+}
+
+smpirun_trap() {
+ 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
+ kill -TERM $$
+ exit 128
+}
+
+trap smpirun_trap HUP INT QUIT ILL ABRT SEGV FPE ALRM TERM USR1 USR2 BUS
while true; do
case "$1" in
exit 1
fi
-HOSTFILETMP=0
if [ -z "${HOSTFILE}" ] ; then
HOSTFILETMP=1
HOSTFILE="$(mktemp tmphostXXXXXX)"
echo "Generated unrolled hostfile ${UNROLLEDHOSTFILE} keeped."
fi
fi
-${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP}
+${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP} &
+pid=$!
+wait $pid
status=$?
+pid=""
-if [ -z "${KEEP}" ] ; then
- if [ -z "${PLATFORM}" ]; then
- rm ${PLATFORMTMP}
- fi
- if [ ${HOSTFILETMP} = 1 ] ; then
- rm ${HOSTFILE}
- fi
- if [ ${UNROLLEDHOSTFILETMP} = 1 ] ; then
- rm ${UNROLLEDHOSTFILE}
- fi
- rm ${APPLICATIONTMP}
-fi
+smpirun_cleanup
exit $status