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