2006, Programozási Módszerek ZH	NÉV:

Make-kel kapcsolatos feladatok

Hogyan éred el, hogy egy adott target készítése közben a make ne írja ki az utasításokat? (3p)

Hogyan éred el, hogy a target egy megadott utasítása, ha hibakóddal lép ki, akkor is továbbmenjen a target készítése? (3p)

Írj egy szabályt / target-et a make-hez, ami tetszőleges jpg kiterjesztésű képet átkonvertál png formátumúra. (Segítség a konverzióhoz: használd a convert f.jpg f.png módon kiadott parancsot. Továbbá, ha egy targetet a makeben a %.kit -re írunk, akkor a $* fogja a fájl kiterjesztés nélküli nevét megadni a target szabályaiban.) (4p)

Programfordítási-szerkesztési feladatok

Mit jelent az, ha statikusra fordítunk le egy programot? (2p)

Hogyan tudsz statikusra fordítani egy programot? (1p)

Mit befolyásolnak a gcc -I -L és -l kapcsolói? Hogyan kell őket használni? (6p)

Ha egy saját magam által fordított library a /home/foo/lib könyvtárban van, és erre van szüksége a bar parancsnak, akkor hogyan indítod el a parancsot, hogy be tudja tölteni a library-t? (2p)

CVS-el kapcsolatos feladatok

A /home/foo/projekt könyvtárban van egy projekt. Hozz létre, és inicializálj egy repository-t, majd importáld bele a könyvtár tartalmát. Az import parancs kötelező argumentumai: repo vendor-tag release-tag. (A repo a repository-n belüli modulnevet jelenti!) Használd a -m paramétert is, hogy megadd az importálási üzenetet, valamint figyelj arra, hogy melyik paramétert kell a cvs parancsa (pl. import) előtt, illetve után megadni! A parancsoknál használhatod az aktuális_kvt$ parancs jelölést arra, hogy a prompttal jelezd, az adott parancsot melyik könyvtárban kellene kiadni. (5p)

Milyen paranccsal íratod ki az aktuális munkapéldány és a repo-ban lévő legújabb verzió közti különbséget? (2p)

Milyen paranccsal küldöd be a repositoryba az aktuális munkapéldányon végrehajtott változtatásokat? (Add meg a hozzá tartozó üzenetet is a parancsban!) (2p)

Perl-script feladat

A mailq parancs kimenetéből keresd ki azoknak a leveleknek az id-it, amelyek frozen-ek (Szerepel a sorban a *** frozen *** szöveg.). A sor harmadik oszlopában lesz a queue id. Ellenőrizd, hogy a levél feladója a feladó@domain.tld legyen. Ha ilyen a levél, akkor a body-jából keresd ki a megszólítást(A sor így fog kinézni: Kedves xy!), és írd ki az ilyen levelek címzettjét, valamint a hozzá tartozó megszólítást így: „e-mail: cimzett@domain.tld	név: xy” végül töröltesd a levelet a queue-ból az exim4 -Mrm queid paranccsal. (10p)

Segítség:

open (F, „ mailq |”); megnyitja az F fájlleíróba a mailq parancs kimenetét.

$sor=<F> igaz értéket ad, ha az F-ből be tudtunk olvasni egy sort a $sor nevű változóba.

if ($sor =~m/\s+(.*)/) { print „$1” ; } kiírja a $sor bevezető whitespacek utáni tartalmát, ha whitespaccel kezdődik.

open (F, „<fajlnev”); close (F); megnyitja olvasásra a fajlnev-et majd bezárja.

Az adott queue id-jű levél headerje a /var/spool/exim4/input/quieid-H a body-ja pedig a /var/spool/exim4/input/queueid-D nevű fájlban található. A feladó a headerben abban a sorban lesz, ami NN -el (és egy szóközzel) kezdődik. A címzett a headerben négy ismeretlen karakterrel és egy szóközzel, majd a To: bevezető szöveggel kezdődik.

Shell-script feladat

ugyanez. Könnyítés: a megszólítást elég „grep”-elni. (10p)

parancs | while read x; do … done
parancs | awk '{print $3;}'

if [grep -q minta fájl >/dev/null ];

2006-05-08T07:00:58