You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
3 years ago | |
---|---|---|
test | 3 years ago | |
LICENSE | 3 years ago | |
README.md | 3 years ago | |
all-full-example.sh | 3 years ago | |
all.sh | 3 years ago | |
bash.sh | 3 years ago | |
dash.sh | 3 years ago | |
noop.sh | 3 years ago | |
pkill-P-full-example.sh | 3 years ago | |
pkill-P.sh | 3 years ago | |
zsh.sh | 3 years ago |
README.md
kill-child-jobs
Examples of how to kill all child jobs when a shell script exits.
all-full-example.sh
starts some jobs, disowns
one of them, and kills all jobs when it exits.
pkill-P-full-example.sh
does the same
except it kills all child processes when it exits.
The remaining scripts in the root are variants of the
kill_child_jobs()
function. The test/test-all.sh
script tests them all and generates the following output showing which
version of the kill_child_jobs()
function works in each shell:
Legend:
∞=script does not halt (after 1 second timeout)
X=disown unsupported by shell
☠=all children killed
🏃=all children still running
✔️=expected result (job killed, disowned child alive)
bash sh ash dash zsh ksh
all.sh ✔️ X☠ X☠ X☠ ✔️ ☠
bash.sh ✔️ X🏃 ∞X☠ X🏃 ✔️ ☠
dash.sh ✔️ X☠ X☠ X☠ 🏃 ☠
noop.sh 🏃 X🏃 X🏃 X🏃 🏃 🏃
pkill-P.sh ☠ X☠ X☠ X☠ ☠ ☠
zsh.sh ∞✔️ X🏃 ∞X☠ X🏃 ✔️ ☠