Using trap to react to signals and system events:
*Killing Child Processes on Exit
Trap expressions don’t have to be individual functions or programs, they can be more complex expressions as well.
By combining jobs -p and kill, we can kill all spawned child processes of the shell on exit:
trap 'jobs -p | xargs kill' EXIT