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
|