2. feladat
Feladva okt. 5-11, 2009
Határidő okt. 24, 2009
Jelzések
Feltölteni egy, a jelzés(ek) kezelését
implementáló forrásállományt kell, neve S02_nn_xxxxxxxxx.c ahol nn -
feladat száma; xxxxxxxxx - felhasználó azonosítója a linux szerveren.
Esetenként további segédállományokra lehet szükség. Ezek neve S02_nn_xxxxxxxxx_
-el kezdődjön.
Amennyiben a házi nem volt órán
bemutatva, ne felejtsük el a teszteredményeknek a feladathoz való
hozzáfűzésekor pontosan ismertetni azt is, hogy hogyan történt a program
tesztelése: hogyan küldtük a kért jelzés(eke)t a folyamat(ok)nak.
1. Írjunk
programot, mely létrehoz két gyerekfolyamatot, a SIGQUIT jelzésre az egyik
gyerekfolyamat befejeződik (az alapértelmezett jelzéskezelőt használva), a
szülőfolyamat és a második gyerekfolyamat pedig ugyanazon jelzés hatására kiír
egy üzenetet, melyben szerepel az illető folyamat azonosítója, majd ők is
befejeződnek.
2. Írjunk
programot, mely egy olyan kritikus szakaszt valósít meg, amin belül nem veszi
figyelembe a SIGQUIT és SIGINT jelzéseket. A kritikus szakaszból a SIGTERM
jelzés hatására lépjen ki, és írja ki a képernyőre a kritikus szakaszban
eltöltött idő során kapott jelzéseket.
3. Írjunk
programot, mely a SIGQUIT jelzésre kilistázza a rendszer azon felhasználóit,
akiknek vannak „zombie” (Z), illetve
külön azokat, akiknek vannak felfüggesztett (T) állapotban levő folyamataik,
majd befejeződik.
4. Írjunk
programot, mely beolvas egy állományból egy, néhány felhasználónevet tartalmazó
listát. Minden egyes felhasználó esetében 2 percenként listázza ki a program,
hogy be van-e jelentkezve és mióta. Amennyiben a felhasználó-listát tartalmazó
állományt módosítjuk, a program a SIGHUP jelzésre aktualizálja a beolvasott
adatokat.
5. Írjunk programot, mely beolvas egy állományból
egy programneveket tartalmazó listát.
6. Írjunk programot, mely számon tartja a rendszerbe bejelentkezett felhasználók által futtatott folyamatok számát. A SIGHUP jelzésre ismételten kilistázza az aktuális
helyzetre vonatkozó statisztikát.
7. Írjunk programot, mely számon tartja azon
folyamatokat, melyek a processzort több mint 50%-al terhelik. A SIGHUP jelzésre listázza ki az aktuális helyzetre vonatkozó információkat. (Megj.: ahhoz, hogy
a programot kipróbálhassuk,
lehet, hogy az 50% helyett kisebb értéket kell használnunk.)
8. Írjunk programot, mely a SIGUSR1 jelzésre elkezdi egy szövegállomány olvasását, a SIGUSR2 jelzésre pedig erre vonatkozó
statisztikát ír ki: sorok száma,
szavak száma, karakterek száma.
9. Írjunk programot, mely létrehoz egy gyerekfolyamatot,
és a SIGUSR1 jelre véletlenszerűen választ egy jelzést (egy
tetszőlegesen meghatározott,
legalább 5 különböző jelzést tartalmazó listából), melyet elküld a gyerekfolyamatnak. A gyerekfolyamat kiírja, hogy milyen jelzést
kapott, majd végrehajtja az
illető jelzéshez tartozó alapértelmezett műveletet.
10. Írjunk programot, mely megfordítja két jelzés hatását: például a SIGINT jelzésre egy SIGFPE jelzést generáljon és fordítva.
(Más szóval SIGINT jelzésre azt
hajtsa vérge, amit alapértelmezett módon SIGFPE jelzésre hajtana vérge, és fordítva. Esetleg előzőleg
kiírhat egy, a kapott jelzést azonosító szöveget.)
11. Írjunk
programot, mely a SIGINT jelzésre kilistázza a rendszerbe bejelentkezett
felhasználók azonosítóját (mindeniket csak egyszer), illetve mindegyik mellé
odaírja az általa éppen használt folyamatok számát, majd befejeződik.
Tippek / gyakori hibák
ne felejtsünk
el az elküldött házihoz mellékelni egy leírást a tesztelés módjáról