Sygnały, a procesy:
- nonatomic.c - program ilustrujący
możliwe (niedeterministyczne) skutki niepoprawnego przekazywania informacji
o obsłudze sygnału przez funkcję obsługi ("handler").
- atomic.c - program pokazujący
poprawny sposób przekazywania informacji o obsłudze sygnału za pomocą zmiennej
globalnej typu sig_atomic_t z atrybutem volatile.
-
sig1.c
- program ilustrujący zawodność obsługi sygnałów z użyciem signal
-
sig2.c - program ilustrujący niebezpieczeństwa wynikające
z modyfikacji danych globalnych oraz metodę ochrony ''sekcji krytycznej''
za pomocą maskowania sygnałów.
- Program pgrp.c tworzy podprocesy, z których
losowa część staje się przywódcami nowych grup procesów. Proces główny wysyła
SIGINT do swojej grupy procesów...
- prg1.c - przykładowe rozwiązanie następującego zadania:
./prg1 N M
N jest liczbą podprocesów procesu głównego, który został utworzony przez
wywołanie prg1.
Proces główny odbiera sygnały SIGINT. Jeżeli odbierze jeden taki sygnał
w ciągu 1 sekundy, to wysyła do podprocesu nr n (gdzie 0<= n < N)
sygnał SIGUSR1, a jeśli odbierze więcej - to wysyła sygnał SIGUSR2.
Po każdym wysłaniu podprocesowi sygnału (SIGUSR1 albo SIGUSR2) licznik n
w procesie głównym jest zwiększany o 1 (modulo N),
a proces główny ponawia odbiór sygnału SIGINT itd.
Jeżeli któryś z podprocesów odbierze M-krotnie sygnał SIGUSR2 -
kończy się, zwracając procesowi głównemu wartość licznika odebranych sygnałów SIGUSR1.
Proces główny wykrywa zakończenie procesu potomnego, wyświetla na standardowym
wyjściu PID potomka i kod jego wyjścia, po czym za pomocą sygnału SIGTERM
powoduje zakończenie wszystkich pozostałych procesów potomnych oraz siebie.
- sigwait1.c - najprostszy przykład wykorzystanie funkcji POSIX
sigwait w procesie jednowątkowym do oczekiwania na przyjście sygnału ("synchroniczne oczekiwanie
na zdarzenie asynchroniczne").
Sygnały, a wątki:
-
sigwait2.c - najprostszy przykład wykorzystanie funkcji POSIX
sigwait w procesie wielowątkowym do oczekiwania na przyjście sygnału ("synchroniczne oczekiwanie
na zdarzenie asynchroniczne").
-
sig3.c - przykład użycia maski sygnałów wątku do
określenia tego wątku, którego wykonanie jest przerywane przy doręczeniu sygnału
do procesu. Wątek główny czeka aktywnie na powiadomienie (przez zmienną globalną)
o obsłudze sygnału.
-
sig4.c - przykład użycia maski sygnałów wątku do
określenia tego wątku, którego wykonanie jest przerywane przy doręczeniu sygnału
do procesu. Przykład wykorzystanie funkcji POSIX sigwait.
- Archiwum plików z bieżącego katalogu
Ostatnia modyfikacja: 27.03.2017 (LJO)