consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
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