1

У меня есть скрипт, из которого я запускаю второй скрипт в подоболочке. Какой самый быстрый, который может послать сигнал на второй сценарий?

script1:

./script2 &
kill -SIGCONT $!

Скрипт2:

echo "~~ ENTRY"

trap 'SUSPEND=false' SIGCONT

SUSPEND=true
while $SUSPEND; do; sleep 1; done

echo "~~ EXIT"

Это не сработает, терминал просто зависнет в режиме ожидания. Я предполагаю, что, поскольку я вызываю kill сразу после запуска script2, ловушка в script2 не успевает проанализироваться, и, следовательно, ничего не происходит - состояние гонки.

Итак, как быстро я смогу послать сигнал дочернему процессу - убедиться, что он пойман в ловушку?

1 ответ1

1

Вы можете использовать сообщение для именованного канала в качестве сигнала, что script2 готов обработать сигнал.

script1:

mkfifo /tmp/pipe
./script2 &
read nothing < /tmp/pipe
kill -CONT $!

Скрипт2:

echo "~~ ENTRY"

trap 'SUSPEND=false' SIGCONT
echo ready > /tmp/pipe

SUSPEND=true
while $SUSPEND; do; sleep 1; done

echo "~~ EXIT"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .