20 lines
507 B
Bash
20 lines
507 B
Bash
|
cleanup() {
|
||
|
pkill -P $$ || true
|
||
|
wait || true
|
||
|
}
|
||
|
|
||
|
trap_add() {
|
||
|
trap_add_cmd=$1; shift || fatal "${FUNCNAME} usage error"
|
||
|
for trap_add_name in "$@"; do
|
||
|
trap -- "$(
|
||
|
extract_trap_cmd() { printf '%s\n' "${3:-}"; }
|
||
|
eval "extract_trap_cmd $(trap -p "${trap_add_name}")"
|
||
|
printf '%s\n' "${trap_add_cmd}"
|
||
|
)" "${trap_add_name}" \
|
||
|
|| fatal "unable to add to trap ${trap_add_name}"
|
||
|
done
|
||
|
}
|
||
|
|
||
|
declare -f -t trap_add
|
||
|
trap_add 'cleanup' EXIT
|