В программном интерфейсе Linux:
В разделе 22.9 мы увидели, как использовать обработчик сигнала плюс sigsuspend()
для приостановки выполнения процесса до тех пор, пока сигнал не будет доставлен.Однако необходимость написать обработчик сигнала и обработать сложности асинхронной доставки делает этот подход громоздким для некоторых приложений.Вместо этого мы можем использовать системный вызов sigwaitinfo()
, чтобы синхронно принять сигнал.
sigsuspend()
и sigwaitinfo()
оба, кажется, приостанавливают вызывающий процесс до ожидаемого сигналапоставляется.В каком смысле первый асинхронный, а второй синхронный?