Сигнал перехвата CHLD - ZSH работает, а ksh / bash / sh - нет? - PullRequest
4 голосов
/ 05 марта 2012

Вот пример кода, в котором сценарий оболочки запускает несколько заданий в фоновом режиме и после получения сигнала CHLD (т. Е. Завершения дочернего процесса) выполняет некоторые действия ... Проблема заключается в том, что если родительский сценарий оболочки являетсяZSH один, он работает просто отлично и перехватывает сигналы CHLD, но другие оболочки делают не !почему это?

#! /bin/zsh -

function foo() { echo "Trapped CHLD signal!" 
}   

trap 'foo' CHLD

./child-work1.sh &
./child-work2.sh &
./child-work3.sh &

echo 'waiting for the children'
wait
echo '--------- done ---------'

1 Ответ

6 голосов
/ 14 марта 2012

Bash автоматически включает управление заданиями в интерактивном режиме, но в сценариях вы должны включить его явно.

set -m
...