Нет. Размещенный код свободен от состояния гонки, только если преобладающая маска сигнала блокирует сигнал, отправляемый дочерним элементом, и если это так, то, поскольку pause()
не изменит маску сигнала, она заблокируется навсегда.
Причина, по которой сигнал должен быть первоначально заблокирован, заключается в том, что в противном случае сигнал может поступить между тестом sigflag == 0
и sigsuspend()
, что означает, что процесс пропустил бы сигнал и застрял.