app uses signals helper
This commit is contained in:
+31
-4
@@ -1,8 +1,35 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Signal helper
|
||||||
|
source /app/signals.sh
|
||||||
|
|
||||||
echo Using DISPLAY $DISPLAY
|
echo Using DISPLAY $DISPLAY
|
||||||
export XDG_RUNTIME_DIR=/tmp/runtime-doge
|
export XDG_RUNTIME_DIR=/tmp/runtime-doge
|
||||||
#export QT_QPA_PLATFORM=offscreen
|
|
||||||
#export QT_X11_NO_MITSHM=1
|
set -x
|
||||||
#export QT_DEBUG_PLUGINS=1
|
|
||||||
exec dogecoin-qt
|
PID=$$
|
||||||
|
TERM_handler() {
|
||||||
|
SIGNAME="$1"
|
||||||
|
echo "Killing ${PID}"
|
||||||
|
echo "Signal ${SIGNAME}"
|
||||||
|
if [ ${PID} -ne 0 ]; then
|
||||||
|
ps -ef --forest
|
||||||
|
CHILDS=$(pgrep -P "${PID}")
|
||||||
|
kill -SIGTERM -"${PID}"
|
||||||
|
for i in $CHILDS; do
|
||||||
|
wait $i
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
ps -ef --forest
|
||||||
|
ret=$(signal_return_val ${SIGNAME})
|
||||||
|
exit $ret
|
||||||
|
}
|
||||||
|
|
||||||
|
signals_trap_with_arg TERM_handler SIGTERM SIGINT
|
||||||
|
|
||||||
|
# Application
|
||||||
|
dogecoin-qt&
|
||||||
|
|
||||||
|
# wait forever
|
||||||
|
signals_wait_forever
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
signals_trap_with_arg() {
|
||||||
|
func="$1" ; shift
|
||||||
|
for sig ; do
|
||||||
|
echo "$func $sig"
|
||||||
|
trap "$func $sig" "$sig"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
signals_wait_forever() {
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
tail -f /dev/null & wait ${!}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
signal_name_to_number() {
|
||||||
|
SIGNAME="$1"
|
||||||
|
trap -l | sed -nr "s/.*\b([0-9]+)\) $SIGNAME.*/\1/p"
|
||||||
|
}
|
||||||
|
|
||||||
|
signal_return_val() {
|
||||||
|
SIGNAME="$1"
|
||||||
|
SIGNUM=$(signal_name_to_number ${SIGNAME})
|
||||||
|
echo "128 + $SIGNUM" | bc
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user