Sigwait()--Synchronously Accept a Signal
Default Public Authority: *USE Threadsafe: Yes
The sigwait() function selects a pending signal from set, clears it from the set of pending signals for the thread or process, and returns that signal number in the location that is referenced by sig. If prior to the call to sigwait() there are multiple pending instances of a single signal number, upon successful return the number of remaining signals for that signal number is decremented by one. If no signal in set is pending at the time of the call, the thread shall be suspended. The thread does not resume until one or more signals in set become pending. The signals defined by set are required to be blocked at the time of the call to sigwait(); otherwise, sigwait() is not successful, and an [EINVAL] error is returned. The signals SIGKILL or SIGStop cannot be selected. Any attempt to use sigwait() to select these signals is simply ignored, and no error is returned. The signal action for the signal in set that is returned in the location referenced by sig is not taken. If more than one thread is using a sigwait function to wait for the same signal, only one of these threads will return from the sigwait function with the signal number. If more than one thread is waiting for the same signal, the first thread to wait on the signal will return from the sigwait function.
Сигналы, определенные набором обязаны быть блокированными во время звонка sigwait (); иначе, sigwait () не успешным, и ошибка [EINVAL] возвращена. Сигналы SIGKILL или SIGStop не могут быть отобраны. Любая попытка использовать sigwait (), чтобы выбрать эти сигналы просто игнорируется, и никакая ошибка не возвращена. Действие сигнала для сигнала в наборе, который возвращен в местоположении, на которое ссылается сигнал, не предпринято. Если больше чем одна нить будет использовать функцию sigwait, чтобы ждать того же самого сигнала, то только одна из этих нитей возвратится из функции sigwait с числом сигнала. Если больше чем одна нить будет ждать того же самого сигнала, то первая нить, которая будет ждать на сигнале возвратится из функции sigwait.
|