Forum » Programiranje » [C] Procesi
[C] Procesi
Cvenemir ::
Napišite programa, kjer oče ustvari n procesov (sinov). Vsak proces (sin) naj v zanki m-krat izpiše svoj pid in izračuna povprečje prvih "k-zaporedna_številka_sina" števil. Razlika med programoma naj bo le ta, da se pri prvem programu procesi izvajajo striktno zaporedno, medtem ko se pri drugem programu procesi izvajajo striktno vzporedno (razlika v delovanju je vidna v izpisu).
Ker sem nov v programskem jeziku C, me zanima, če lahko na prvi ogled ocenite pravilnost programov. Najlepša hvala.
Vzporedno:
Zaporedno:
Ker sem nov v programskem jeziku C, me zanima, če lahko na prvi ogled ocenite pravilnost programov. Najlepša hvala.
Vzporedno:
#include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> /*Vzporedno izvajanje procesov*/ int main(int argc, char** argv) { /*Deklaracija spremenljivk*/ int vilca; int n = atoi(argv[1]); /*Število ustvarjenih procesov*/ int m = atoi(argv[2]); /*Število izpisov PID-a*/ int k = atoi(argv[3]); /*Zaporedna številka sina*/ int stevec_k = atoi(argv[3]); int povprecje = 0; /*Zanka, ki se izvaja, dokler n = 0*/ while(n > 0) { /*Ustvarimo sinove */ vilca = fork(); n--; /*Preverimo, če je oče sin*/ if(vilca == 0) { while(m > 0) { /*Izpis PID-ov*/ povprecje += k; povprecje /= stevec_k; printf("Izpis PID: %d \nPovprečje: %d \n", (int)getpid(), povprecje); m--; } /*Zaključek*/ exit(0); } } while(vilca > n) { /*Čakanje, da se sinovi zaključijo*/ wait(0); n--; } return 0; }
Zaporedno:
#include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> /*Zaporedno izvajanje procesov*/ int main(int argc, char** argv) { /*Deklaracija spremenljivk*/ int vilca; int n = atoi(argv[1]); /*Število ustvarjenih procesov*/ int m = atoi(argv[2]); /*Število izpisov PID-a*/ int k = atoi(argv[3]); /*Zaporedna številka sina*/ int stevec_k = atoi(argv[3]); int povprecje = 0; /*Zanka, ki se izvaja, dokler n = 0*/ while(n > 0) { /*Ustvarimo novega sina*/ vilca = fork(); n--; /*Preverimo, če je oče sin*/ if(vilca == 0) { while(m > 0) { /*Izpis PID-ov*/ povprecje += k; povprecje /= stevec_k; printf("Izpis PID: %d \nPovprečje: %d \n", (int)getpid(), povprecje); m--; } exit(0); } else { /*Čakanje sinov*/ wait(&vilca); } } return 0; }
Ciklamen ::
Koliko argumentov prejmeš ob klicu iz terminala, če jih premalo ali preveč prejmeš ne bo delovalo :)
- End of the Post ->
Cvenemir ::
torej dam vse skupaj v stavek:
if(argv == 3)
{
...
...
}
else
{
printf("Vnesli ste napačno število argumentov");
if(argv == 3)
{
...
...
}
else
{
printf("Vnesli ste napačno število argumentov");
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] Vsota števil v poljuOddelek: Programiranje | 1281 (1219) | Cvenemir |
» | C (Izračun povprečja)Oddelek: Programiranje | 1625 (1259) | joze67 |
» | [C] najmanjse steviloOddelek: Programiranje | 1087 (948) | BigWhale |
» | C - pomočOddelek: Programiranje | 1457 (1197) | Thagirion |
» | C: connect() funkcija, kako nastaviti timeoutOddelek: Programiranje | 1780 (1561) | fefko-the-bulldog |