Fehler #614 » trap_test.sh
| 1 |
#!/bin/bash
|
|---|---|
| 2 |
|
| 3 |
ctrlc_count=0 |
| 4 |
|
| 5 |
|
| 6 |
set -e -u |
| 7 |
|
| 8 |
function no_ctrlc() |
| 9 |
{
|
| 10 |
let ctrlc_count++
|
| 11 |
echo
|
| 12 |
if [[ $ctrlc_count == 1 ]]; then |
| 13 |
echo "Stop that." |
| 14 |
elif [[ $ctrlc_count == 2 ]]; then |
| 15 |
echo "Once more and I quit." |
| 16 |
else
|
| 17 |
echo "That's it. I quit." |
| 18 |
exit
|
| 19 |
fi |
| 20 |
}
|
| 21 |
|
| 22 |
function helloWorld() |
| 23 |
{
|
| 24 |
echo "Hello Signal" |
| 25 |
ls
|
| 26 |
ls
|
| 27 |
echo $PWD |
| 28 |
# exit 0
|
| 29 |
}
|
| 30 |
|
| 31 |
function errorHandler() |
| 32 |
{
|
| 33 |
echo "error" |
| 34 |
exit 0
|
| 35 |
}
|
| 36 |
|
| 37 |
|
| 38 |
# trap no_ctrlc SIGINT
|
| 39 |
# trap helloWorld SIGUSR1
|
| 40 |
# trap helloWorld SIGUSR2
|
| 41 |
# trap errorHandler ERR
|
| 42 |
|
| 43 |
|
| 44 |
# Our USR1 signal handler
|
| 45 |
function usr1_trap(){ |
| 46 |
printf 'Here is the PID: %d\nExiting right-now!\n' $$ |
| 47 |
# exit
|
| 48 |
}
|
| 49 |
|
| 50 |
# Register USR1 signal handler
|
| 51 |
trap usr1_trap USR1
|
| 52 |
|
| 53 |
|
| 54 |
echo "PID: $BASHPID, $$" |
| 55 |
printf 'Run this to stop me:\nkill -USR1 %d\n' $$ |
| 56 |
|
| 57 |
|
| 58 |
echo Sleeping
|
| 59 |
|
| 60 |
while true |
| 61 |
do
|
| 62 |
sleep .5 |
| 63 |
done
|
| 64 |
|
| 65 |
|
| 66 |
|
| 67 |
##printf 'Run this to stop me:\nkill -USR1 %d\n' $$
|
| 68 |
##
|
| 69 |
## Wait in background, not consuming CPU
|
| 70 |
#while :; do
|
| 71 |
# sleep 9223372036854775807 & # int max (2^63 - 1)
|
| 72 |
# wait $!
|
| 73 |
#done
|
| 74 |
|
| 75 |
|
| 76 |
echo End
|
| 77 |
|
| 78 |
|
| 79 |
#---fin--------------------------------------
|