Я хочу создать Bash script для запуска параллельных дочерних процессов. Есть ли способ сделать это, чтобы дочерние скрипты по-прежнему получали сигналы, отправленные в родительский процесс?
Здесь примерно так, как я хочу запускать дочерние процессы, но это не соответствует моим критериям сигнализации.
for (( i=0; i<9; i++ ))
{
{ echo $i start ; sleep 5s ; echo $i complete ; } &
}
wait
Поскольку это работает автоматически в C-программе (которая использует fork/exec
), я считаю, что это должно быть возможно без использования trap
-фазовой пересылки сигналов, которая сама может быть прервана до того, как сигналы будут перенаправлены.
Обходным путем для этого является использование GNU-parallel
. Я не знаю, что это за механизм, но он решает эту проблему - до тех пор, пока вы готовы перестроить свои циклы в синтаксис стиля xargs
. GNU-parallel
не решает проблему, если используется опция --semaphore
.
Я думаю, что ответ здесь, но я не знаю, как его перевести на Bash: Сигнал, отправленный как дочернему, так и родительскому процессу.