Laboratorium 8  
==============
Sygnaly POSIX
-------------
Lektura podstawowa:
      * man sigaction, sigsetops

1. Kompilacja: wywolaj program `make'
2. Uzytkowanie: uruchamianie programow
3. Pliki:

   err.c, err.h
        Obsluga bledow.

   signals.c
	Program wypisuje informacje o wszystkich sygnalach i probuje zmienic
	ich obsluge; jesli taka zmiana sie nie powiodla, uzytkownik jest o tym 
	informowany.  Nastepnie uzytkownik moze wyslac do tego procesu pewne 
	sygnaly i obejrzec reakcje programu na nie.  Funkcja `psignal' wypisuje
	stanadardowe komunikaty o sygnalach.  Program konczy sie po otrzymaniu
	znaku konca linii.

   cleanup.c
	Program ilustruje sposob pisania funkcji obslugi sygnalow, ktore
	wykonuja rowniez standardowa obsluge.  W momencie pojawienia sie
	SIGSEGV sygnaly SIGINT i SIGQUIT zostaja zablokowane.
	Potem nastepuja porzadki, przywrocenie standardowej obslugi SIGSEGV
	(czyli zrzut obrazu pamieci), "reczne" odblokowanie tego sygnalu i
	(na czas obslugi danego sygnalu ten sygnal jest zablokowany) i ponowne
	wyslanie tego sygnalu do siebie.
	W trakcie obslugi SIGSEGV mozesz sprawdzic czy rzeczywiscie inne
	sygnaly sa zablokowane, potem nacisnij enter.  
	Przed nacisnieciem klawisza enter mozesz wyslac SIGSEGV do tego 
	procesu, aby sprawdzic, ze zostal on rowniez zablokowany.  
	UWAGA:
	Na tych komputerach zrzucanie pamieci jest domyslnie zablokowane.
	Aby nastapil zrzut pamieci nalezy wydac polecenie `ulimit -c 4096'.

   ctrl-c.c
	Program ilustruje, ze sygnaly POSIXowe moga zabezpieczac proces
	trwale przed jakims sygnalem; po wychwyceniu sygnalu nie trzeba
	ponownie ustanawiac dla niego obslugi.  Potem SIGINT (^C) jest 
	blokowany do czasu wcisniecia enter.  Nastepuje sprawdzenie czy
	SIGINT wystapil i jego odblokowanie.  Po odblokowaniu zwalniane
	sa oczekujace sygnaly (jesli nastapily), ale tylko po jednym
	egzemplarzu kazdego - wielokrotne ^C dziala tak samo jak 
	jednokrotne.  W podobny sposob dziala zablokowanie sygnalu na czas 
	obslugi innego sygnalu.

	Zbadaj co sie stanie gdy dodasz flage SA_ONESHOT.

   child.c
	Pokazuje jak niektore interpretatory polecen moga w trakcie czytania 
	danych z terminala informowac o zakonczeniu procesu potomnego.  Dzieki
	funkcji siginterrupt ustalamy, ze SIGCHLD ma nie przerywac dzialania 
	funkcji systemowych.  I po obsluzeniu sygnalu (po 2 sekundach) 
	nastepuje powrot do wykonywania funkcji read.
