Шрифт:
К сожалению, этот код изобилует условиями гонки:
Решением является блокирование интересующего сигнала в любое время, кроме ожидания его появления. Например, предположим, что интересующим нас сигналом является
Ключом к использованию этого является то, что
Вы легко можете расширить этот пример для нескольких сигналов, блокируя в
При наличии всего этого не следует в новом коде использовать
ЗАМЕЧАНИЕ. Приведенный выше код предполагает, что маска сигналов процесса начинается пустой. Код изделия должен вместо этого работать с любой маской сигналов, имеющейся на момент запуска программы.
10.8. Важные сигналы специального назначения
Некоторые сигналы имеют особое назначение. Здесь мы опишем наиболее важные.
10.8.1. Сигнальные часы:
Часто бывает необходимо написать программу в виде
Часто такая потребность возникает в сценариях оболочки, например, в ожидании регистрации определенного пользователя: