Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[DOC] Fixed even more errors.
[simgrid.git] / src / smpi / smpirun.in
index 18a29d8..fb1754a 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
             ;;
@@ -282,7 +291,7 @@ fi
 
 if [ -z "${HOSTFILE}" ] ; then
     HOSTFILETMP=1
-    HOSTFILE="$(mktemp tmphostXXXXXX)"
+    HOSTFILE="$(mktemp smpitmp-hostfXXXXXX)"
     perl -ne 'print "$1\n" if /.*<host.*?id="(.*?)".*?\/>.*/' ${PLATFORM} > ${HOSTFILE}
     perl -ne 'if (/.*<cluster.*?prefix="(.*?)".*?radical="(.*?)".*?suffix="(.*?)".*/) { 
                 my ($pre,$rad,$post)=($1,$2,$3); 
@@ -305,7 +314,7 @@ UNROLLEDHOSTFILETMP=0
 multiple_processes=`grep -c ":" $HOSTFILE`
 if [ "${multiple_processes}" -gt 0 ] ; then
     UNROLLEDHOSTFILETMP=1
-    UNROLLEDHOSTFILE="$(mktemp tmphostXXXXXX)"
+    UNROLLEDHOSTFILE="$(mktemp smpitmp-hostfXXXXXX)"
     perl -ne ' do{ for ( 1 .. $2 ) { print "$1\n" } } if /(.*?):(\d+).*/'  ${HOSTFILE}  > ${UNROLLEDHOSTFILE}
     if [ ${HOSTFILETMP} = 1 ] ; then
         rm ${HOSTFILE}
@@ -334,7 +343,7 @@ fi
 
 ##-------------------------------- DEFAULT or SPECIFIED PLATFORM --------------------------------------
 if [ -z "${PLATFORM}" ]; then
-    PLATFORMTMP="$(mktemp tmpXXXXXX)"
+    PLATFORMTMP="$(mktemp smpitmp-platfXXXXXX)"
 
     cat > ${PLATFORMTMP} <<PLATFORMHEAD
 <?xml version='1.0'?>
@@ -376,7 +385,7 @@ fi
 ##-------------------------------- end DEFAULT or SPECIFIED PLATFORM --------------------------------------
 
 ##-------------------------------- DEFAULT APPLICATION --------------------------------------
-APPLICATIONTMP="$(mktemp tmpXXXXXX)"
+APPLICATIONTMP="$(mktemp smpitmp-appXXXXXX)"
 #APPLICATIONTMP="app.xml"
 
 
@@ -398,7 +407,7 @@ if [ "${EXTOPT}" = "smpi_replay" ]; then
         hosttraces=$(cat ${APP_TRACES} | tr '\n\r' '  ' )
         NUMTRACES=$(cat ${APP_TRACES} | wc -l)
     else
-        printf "File not found: %s\n", "${APP_TRACES:-\${APP_TRACES\}}" >&2
+        printf "File not found: %s\n" "${APP_TRACES:-\${APP_TRACES\}}" >&2
         exit 1
     fi
 fi
@@ -502,17 +511,22 @@ export SMPI_GLOBAL_SIZE=${NUMPROCS}
 if [ -n "${KEEP}" ] ; then
     echo ${EXEC} ${TRACEOPTIONS} ${SIMOPTS} ${PLATFORMTMP} ${APPLICATIONTMP}
     if [ ${HOSTFILETMP} = 1 ] ; then
-        echo "Generated hostfile ${HOSTFILE} keeped."
+        echo "Generated hostfile ${HOSTFILE} kept."
     fi
     if [ ${UNROLLEDHOSTFILETMP} = 1 ] ; then
-        echo "Generated unrolled hostfile ${UNROLLEDHOSTFILE} keeped." 
+        echo "Generated unrolled hostfile ${UNROLLEDHOSTFILE} kept." 
     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