Ustvarjanje procesa (sprotna naloga)

V sklopu te naloge demonstrirajte uporabo klicev za ustvarjanje procesov in zaganjanje programov. Pripravite 3 programe, ki izvedejo v nadaljevanju opisane naloge. Pripravite tudi Makefile, ki bo vašo kodo prevedel v izvedljive programe.

Posamezni naslovi podnalog v nadaljevanu so sestavljeni iz pričakovanega imena programa in pričakovanega imena izvorne zbirke. Na sistem oddajte .zip paket z Makefile skripto in izvornimi zbirkami. Bodite pozorni na poimenovanja. Pred oddajo preverite delovanje z avtomatskim preizkusom. naloga_1 (naloga_1.c)

Program naj ustvari 5 novih procesov, otrok. Vsak otrok naj izpiše svoj PID in PID starša. Starš naj počaka, da se otroci zaključijo in nato izpiše svoj PID. Otroci naj se izvajajo vzporedno (kolikor bo sistem to dopuščal). Starš najprej ustvari vse otroke, šele nato jih prične čakati.

Primer zagona:

$ ./naloga_1 otrok PID: 1324758, PPID: 1324757 otrok PID: 1324759, PPID: 1324757 otrok PID: 1324760, PPID: 1324757 otrok PID: 1324761, PPID: 1324757 otrok PID: 1324762, PPID: 1324757 stars PID: 1324757

naloga_2 (naloga_2.c)

Program bo prejel dva argumenta. Prvi argument bo pot do vhodne zbirke, drugi argument bo pot do izhodne zbirke. Vhodna zbirka mora obstajati, izhodna ne sme. Program naj odpre zbirki in svoj standardni vhod zamenja z vhodno zbirko, svoj standardni izhod pa z izhodno zbirko. Nato naj požene program tr (klic fork ni potreben) s parametri "a-z" in "A-Z" kot:

$ tr a-z A-Z

to bo zamenjalo vse male črke vhodne zbirke z velikimi črkami in jih zapisalo v izhodno zbirko.

Primer zagona in izhoda:

$ echo hello world > vhod.txt $ ./naloga_2 vhod.txt izhod.txt $ cat izhod.txt HELLO WORLD $ ./naloga_2 vhod.txt izhod.txt napaka pri klicu open: file exists

naloga_3 (naloga_3.c)

Program bo preko argumentov prejel pot do programa in njegove parametre. Vaš program naj ustvari nov proces in v tem procesu požene podan program. Vaš program naj počaka da se podan program zaključi, nato pa naj prebere in izpiše njegovo izhodno vrednost. V primeru, da pri izvajanju podanega programa pride do napake, naj vaš program izpiše primerno opozorilo in izhodno vrednost -1.

Primer zagona:

$ ./naloga_3 /usr/bin/echo hello world hello world program je vrnil vrednost 0 $ ./naloga_3 /usr/bin/ls ne_obstaja/ /usr/bin/ls: cannot access 'ne_obstaja/': No such file or directory program je vrnil vrednost 2