Példaprogramok

A proc jegyzékben a processz kontroll rendszerhívásokra találunk példákat:

system-syscall-pelda.c - system( ) rendszerhívásokra,

szulo-gyermek-egyutt-fut.c - fork( ) hívásra,

fork-exec-villak.c & echoall.c - fork után execle( ) és execlp( ) hívásokra példa.

A következõ fájlok processz terminálódási példák:

processz-terminalodasok.c - különbözõ terminálódások,

processz-terminalodas2.c - terminálódó processz gyermekei esete,

zombie-processz.c - zombie elõállítás.

A proc jegyzékben van egy Makefile is, mely segítségével elõállíthatók a futtaható példaprogramok.

A némelyik futtatható programnak szüksége van az a lib/prexit.c fájlból elõállított tárgymodulra. A proc/Makefile szerint ezt a $OBJ/mylib.a könytárba csomagoltuk. A prexeit.c-beli pr_exit( ) a terminálódás jellemzõjét és a visszatérési értéket írja ki.

A signals jegyzékben a szignálozásra találunk példákat.

Az alarm-ado1.c SIGALRM szignált küld az argumentumában megadott azonosítójú (pid-û) processznak, SVID stílusban, a kill( ) rendszerhívással.

Az alarm-ado2.c szintén SIGALRM szignált küld az argumentumában megadott azonosítójú processznek, de a sigsend( ) rendszerhívással.

Az alarmra-var1.c a SIGALRM szignál kezelését beállítja saját kezelõre. Ezt a signal( ) rendszerhívással teszi.

Végül az alarmra-var2.c szintén a saját kezelõ beállítását mutatja, de itt a POSIX sigaction( ) rendszerhívással történik a diszponálás.

Az abort.c önmagában nem futtatható függvény. Azt mutatja be, milxyen is lehetne egy POSIX stílusú abort( ) rendszerhívás. Hívása során nem lehet a SIGABRT szignált ignorálni, nem lehet kezelését átvenni, és nem lehet blokkolni.
Hogy mindezeket biztosítsuk, ezt mutatná be az abort.c fájl.
POSIX stílusú szinálkezelõ hívásokat tanulmányozhatunk benne. Érdemes megnézni!

Az ipc/msg jegyzékben a klasszikus üzentsor használatára találhatunk példákat.

Három C program van a jegyzékben.

Az msgletrehozas.c üzenetsort hoz létre, ha az még nem létezik, beazonosítja, ha az adott kulcsú sor már létezik.
Ezután megnézi, az üzenetsorban van-e üzenet, Kiírja az esetleges üzeneteket, ezzel ki is üríti a sort.

Az msgkuldes.c beazonosítja az adott kulcsú üzenetsort, illeteve, ha az nem létezik, létrehozza. Ezután a szabványos kimenetre "készenléti jelet ad, azt jelezve, hogy egy sort beolvasna. A beolvasott sort beteszi az üzenetsor következõ üzenetének.

Az msgmegszuntetes.c program az adott kulcsú üzenetsort törli, feltéve, hogy az üres.

A Makefile segíthet a gyors fordításokban.

Az ipc/shm jegyzékben az osztott memória szegmens használatára van egyetlen példa:

az osztott-mem-jmp.c fájl.

Az ipc/sem jegyzéket is érdemes megnézni.

Három összetartozó, nagyon egyszerû példaprogramot találunk a mutex-creator.c, a mutex-hasznalo.c és a mutex-takarito.c fájlokban. Ezekhez is szükséges a mysem.h nevû beleértett fájl. E három programmal az egyszerû, egyetlen elemi szemafort tartamazó, a kölcsönös kizárást biztosító (mutex) szemafor kezelést mutatjuk be.

A további négy C nyelvû program rendre a term-fogy-inicializalas.c, a term-fogy-fogyaszto.c, a term-fogy-termelo.c és a term-fogy-takarito.c fájlokban található meg. Ezek is használják a mysem.h beleértett fájlt. Ezekkel az elõadáson is szereplõ termelõ-fogyasztó probléma egy megoldását mutatjuk be: a korlátlan számú termelõ processzt, szintén korlátlan fogyasztót, a korlátozott raktárt és az egyetlen ki-berakó-gépes modellt. Ha megnézzük a programokat, láthatjuk, hogy a szükséges három szemafort egyetelen, de három elemi szemaforból alkotott szemaforral valósítjuk meg.

Ugyanitt a Makefile segíthet a gyors fordításokban.