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 | 1332 (1270) | Cvenemir |
» | C (Izračun povprečja)Oddelek: Programiranje | 1675 (1309) | joze67 |
» | [C] najmanjse steviloOddelek: Programiranje | 1118 (979) | BigWhale |
» | C - pomočOddelek: Programiranje | 1491 (1231) | Thagirion |
» | C: connect() funkcija, kako nastaviti timeoutOddelek: Programiranje | 1845 (1626) | fefko-the-bulldog |