2012-03-05 2 views
4

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

#! /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 ---------' 
+0

- код выхода/сигнал первого аргумента foo()? вы имеете в виду «код выхода» вместо «сигнала»? –

ответ

6

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

set -m 
+0

красивый. thnx - :) –

Смежные вопросы