Professional Documents
Culture Documents
OS 08 Python Modul Signal
OS 08 Python Modul Signal
Operacijski sustavi
Studij: Sveučilišni prijediplomski studij Informatika
Asistent: Doc. dr. sc. Vanja Slavuj
Sadržaj nastavne cjeline
• Uvod
• definicija i uloga signala
• slanje signala
• Modul signal
• opis namjene modula signal i njegova dokumentacija
• primanje i obrada signala
• ignoriranje signala i zadani način obrade signala
• alarmi
Operacijski sustavi 2
Cilj nastavne cjeline
Operacijski sustavi 3
Ishodi učenja
Operacijski sustavi 4
Uvod
Signali i njihova uloga
Operacijski sustavi 6
Popis signala
Operacijski sustavi 7
Ponašanje procesa nakon primitka
signala
• Nakon primitka signala, proces može:
• zaustaviti izvođenje
• nastaviti izvođenje
• prekinuti izvođenje
• prekinuti izvođenje uz stvaranje tzv. core dump datoteke sa stanjem
memorije u trenutku prekida
• ignorirati (zanemariti) signal
• Obrada signala po pristizanju zapravo ovisi o načinu na koji je
programer napisao skriptu koja implementira obradu signala
Operacijski sustavi 8
Slanje signala (korisnički pristup)
9
Operacijski sustavi
Slanje signala (programski pristup)
10
Operacijski sustavi
Modul signal
Modul signal
Operacijski sustavi 12
Dokumentacija modula signal
Operacijski sustavi 13
Najava modula signal
14
Operacijski sustavi
Primanje i obrada signala
Operacijski sustavi 15
Primjer (1) – definiranje upravljača
• Zadatak uz primjer: Napiši program koji na zaslon ispisuje vlastiti PID, a zatim uz
odgovarajuću poruku koja se prikazuje svakih 10 sekundi, čeka pristizanje signala
SIGUSR1 ili SIGHUP (kojeg će mu poslati korisnik iz drugog terminala). Kada
jedan od navedenih signala stigne do programa, na zaslon se ispisuje poruka o
pristizanju signala s odgovarajućim brojem, a program nastavlja čekati nove
signale.
Operacijski sustavi 16
Rješenje primjera (1)
17
Operacijski sustavi
Rješenje primjera (1)
18
Operacijski sustavi
Funkcije za rad s upravljačem
Operacijski sustavi 19
Primjer (2) – prilagodba ranijeg
programa
20
Operacijski sustavi
Primjer (3) – provjera upravljača
Operacijski sustavi 21
Rješenje primjera (3)
22
Operacijski sustavi
Načini obrade signala
Operacijski sustavi 23
Primjer (4) – načini obrade signala
• Zadatak uz primjer: Napiši program koji na zaslon ispisuje vlastiti PID i čeka
pristizanje signala SIGHUP, SIGINT ili SIGTERM (kojeg će mu poslati korisnik iz
drugog terminala). Za pristigli signal HUP, program na zaslon ispisuje poruku o
pristiglom broju signala i prekida svoje izvršavanje. Za pristigli signal INT, program
ga ignorira i nastavlja čekati novi signal. Za pristigli signal TERM, program se
ponaša onako kako je zadano tim signalom.
Operacijski sustavi 24
Rješenje primjera (4)
25
Operacijski sustavi
Obrada signala – uputa
Operacijski sustavi 26
Alarmi
Operacijski sustavi 27
Primjer (5) – alarmi
Operacijski sustavi 28
Rješenje primjera (5)
29
Operacijski sustavi
Zadatci za ponavljanje
1. Napiši program koji hvata signal SIGKILL, čeka na pristizanje signala, te po
pristizanju signala KILL na zaslon ispisuje poruku o identifikatoru signala i završava
izvođenje. Što se događa? Zbog čega?
2. Napiši program koji nakon pokretanja na zaslon ispisuje poruku „Proces-roditelj
započinje”, stvara proces-dijete i čeka na njegov dovršetak. Proces-dijete započinje
izvođenje uz odgovarajući poruku i PID na zaslonu te nudi korisniku unos opcije ‘A’ za
zaustavljanje njegova izvođenja (signal SIGTSTP) ili ‘B’ za završavanje izvođenja
(signal SIGTERM) uz zapis stoga u datoteku backup_stog.txt. U slučaju
zaustavljanja procesa-djeteta, postavlja se alarm od 15 sekundi (koji se pokreće
jednom kada se iz drugog terminala signalom nastavi njegovo izvođenje), a proces-
dijete osluškuje signale. Kada alarm stigne, program radi isto što i opcijom ‘B’ ranijeg
izbornika. Kada proces-dijete završi svoje izvođenje, proces roditelj završava
izvođenje (uz odgovarajuću poruku).
Operacijski sustavi 30
Literatura
1. Budin, L., Brođanac, P., Markučić, Z. & Perić, S. (2012). Rješavanje problema
programiranjem u Pythonu. Zagreb: Element.
2. Hellmann, D. (2011). The Python standard library by example. Upper Saddle River, NJ:
Addison-Wesley.
3. Hofmann, F. (nd). Handling Unix signals in Python. Stack Abuse.
https://stackabuse.com/handling-unix-signals-in-python/
4. Python Software Foundation. (2020, May 2). The Python Standard Library.
https://docs.python.org/3/library/index.html
5. van Rossum, G. & Drake, F. L. (2011). Python language reference manual (Revised and
updated for Python 3.2). Bristol: Network Theory Ltd.
Operacijski sustavi 31