Sygnały POSIX
#
Zakres wykładu
#
- Koncepcja sygnału POSIX.
- Przyczyny sygnałów: wyjątki sprzętowe, czynności wykonywane przez procesy
- Cele sygnałów: określony wątek, proces lub grupa procesów.
- Najczęściej wykorzystywane sygnały UNIX.
- Reakcje na sygnały:
- doręczenie (signal delivery):
- ignorowanie sygnału
- wykonanie funkcji obsługi zdefiniowanej przez użytkownika.
- wykonanie czynności domyślnej (exit, core dump+exit, continue, stop)
- przyjęcie (signal acceptance:
sigwait()
- Programowa generacja sygnału:
kill()
, alarm()
,… - Ustanawianie funkcji obsługi zdefiniowanej przez użytkownika:
sigaction()
- Koncepcja maski sygnałów i blokowanie sygnałów:
sigprocmask()
, sigpending()
- Reakcja na wielokrotne wystąpienie sygnałów.
- Atrybuty
volatile sig_atomic_t
a obsługa sygnałów. - Efekty uboczne doręczania sygnałów:
- przedwczesne kończenie “długich” funkcji systemowych (z
errno==EINTR
) ; makro TEMP_FAILURE_RETRY
. - nieprzewidywalne zachowanie funkcji ze stanem (non-reentrant); funkcje odporne na asynchroniczną obsługę sygnałów (
async-safe functions
).
- Oczekiwanie na sygnały:
pause()
, sigsuspend()
, sigwait()
. - Sygnały generowane przez terminal.
stty
.
Materiały
#
- Prezentacja wykładowa
- Programy wykładowe
- Dodatkowa lektura: The GNU C library documentation: Signal Handling (24.1-24.8)
- Stare Slajdy: POSIX_signals.pdf