The built-in bash command wait should be able to take a pid argument
and just wait for the specified process to die, but it currently has a
bug and what actually does is waiting for the death of all the
children. For this reason the stubdom-dm script doesn't exit properly
after stubdom destruction. This patch solves the issue spawning only
one child, removing the sleep subprocess workaround that was used to
create a usable stdin for "xm console" and replacing it with a fifo.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
# Termination handler
term() {
- kill %1
[ -n "$vncpid" ] && kill -9 $vncpid
+ rm -f /tmp/domname-dm
rm ${stubdom_configdir}/$domname-dm
exit 0
}
j=$(( $j + 1 ))
done
echo " ] " >> ${stubdom_configdir}/$domname-dm
-creation="xm create -c ${stubdom_configdir}/$domname-dm target=$domid memory=32 extra=\"$extra\""
-(while true ; do sleep 60 ; done) | /bin/sh -c "$creation" &
-#xterm -geometry +0+0 -e /bin/sh -c "$creation ; echo ; echo press ENTER to shut down ; read" &
-consolepid=$!
+mkfifo /tmp/$domname-dm
+xm create -c ${stubdom_configdir}/$domname-dm target=$domid memory=32 extra="$extra" < /tmp/$domname-dm &
+exec 4>/tmp/$domname-dm
###########
fi
# wait for SIGHUP or stubdom termination
-wait $consolepid
+wait
term