Open2
shellscript内で trap を使って指定した順番でchild process を kill する
とりあえず動いたやつ
#!/bin/sh
cleanup(){
echo "clealing up..."
kill "${child_pid3}";
wait "${child_pid3}";
echo "${child_pid3} is killed"
kill "${child_pid2}";
wait "${child_pid2}";
echo "${child_pid2} is killed"
kill "${child_pid1}";
wait "${child_pid1}";
echo "${child_pid1} is killed"
}
# SIGINT, SIGTERM を受けたら、SIGTERM にして、parent は終了させない
trap 'trap " " TERM; cleanup' INT TERM
echo "The scrip pid is $$"
sleep 30 &
child_pid1="$!"
sleep 40 &
child_pid2="$!"
sleep 50 &
child_pid3="$!"
wait # 全てのプロセスが終了するまで待つ(親プロセスもいきたまま)
set -e
をつけていると trap が動作しないように見える