fixa
This commit is contained in:
parent
496784c375
commit
474751df6a
32
doc.c
32
doc.c
@ -7,25 +7,25 @@ bhoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
|
|||||||
#include <stdlib.h> //rand, exit
|
#include <stdlib.h> //rand, exit
|
||||||
#include <unistd.h> //fork, getpid, getppid, sleep
|
#include <unistd.h> //fork, getpid, getppid, sleep
|
||||||
|
|
||||||
|
#define DIM 30
|
||||||
|
#define MAX_NUMERO 20
|
||||||
|
|
||||||
int main(int argc, char* argv[]) //argv=[fork_multipli,6]
|
int main(int argc, char* argv[]) //argv=[fork_multipli,6]
|
||||||
{
|
{
|
||||||
int i, num_figli=3, v[30], c, d, s=0;
|
int i, num_figli=3, v[DIM], c, d, s=0;
|
||||||
if (argc>1)
|
if (argc>1)
|
||||||
num_figli = atoi(argv[1]);
|
num_figli = atoi(argv[1]);
|
||||||
else
|
|
||||||
{
|
|
||||||
printf ("i figli sono : %d, \n", num_figli);
|
printf ("i figli sono : %d, \n", num_figli);
|
||||||
for(i=0; i<30; i++)
|
for(i=0; i<DIM; i++)
|
||||||
{
|
{
|
||||||
v[i]=rand() % 20;
|
v[i]=rand() % MAX_NUMERO;
|
||||||
printf ("%d-", v[i]);
|
printf ("%d-", v[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
d=30/num_figli;
|
d=DIM/num_figli;
|
||||||
printf ("\nInserisci il numero da cercare: ");
|
printf ("\nInserisci il numero da cercare: ");
|
||||||
scanf("%d", &c);
|
scanf("%d", &c);
|
||||||
printf ("\n numero da trovare: %d\n", c);
|
printf ("\n numero da trovare: %d\n", c);
|
||||||
}
|
|
||||||
pid_t pid[num_figli];
|
pid_t pid[num_figli];
|
||||||
|
|
||||||
for(i=0; i<num_figli; i++)
|
for(i=0; i<num_figli; i++)
|
||||||
@ -35,20 +35,26 @@ int main(int argc, char* argv[]) //argv=[fork_multipli,6]
|
|||||||
perror("Errore nella fork().\n");
|
perror("Errore nella fork().\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
if(pid[i]== 0)
|
if(pid[i]== 0) {
|
||||||
for(s=0; s<d; s++){
|
// hai già impostato s, non deve tornare a 0 con ogni ciclo
|
||||||
|
for(; s<d; s++){
|
||||||
if(v[s]==c){
|
if(v[s]==c){
|
||||||
printf("%d figlio di %d: ha trovato %d, all'indice %d.\n il figlio è %d", getpid(), getppid(), c, s, i);
|
printf("%d figlio di %d: ha trovato %d, all'indice %d. il figlio e' il numero %d\n", getpid(), getppid(), c, s, i);
|
||||||
exit(EXIT_SUCCESS);
|
exit(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
s=s+10;
|
s=s+10;
|
||||||
d=d+10;
|
d=d+10;
|
||||||
}
|
}
|
||||||
|
|
||||||
//riprendo a gestire il flusso del padre
|
//riprendo a gestire il flusso del padre
|
||||||
int x;
|
int x;
|
||||||
wait;
|
do {
|
||||||
printf("consegnato");
|
wait(&x);
|
||||||
|
x = WEXITSTATUS(x);
|
||||||
|
} while(x == EXIT_FAILURE);
|
||||||
|
printf("consegnato ad indice %d\n", x);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user