Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- a:padreFigliMultipliConSalvataggioPID.c
- gcc -Wall -o p padreFigliMultipliConSalvataggioPID.c
- // ============================ ESERCIZIO 4 PARTE C ==================
- #include <stdlib.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <sys/wait.h>
- #include <time.h>
- int mia_random(int n)
- {
- return rand() % n;
- }
- int main(int argc, char** argv)
- {
- srand(time(NULL));
- if(argc != 2)
- {
- printf("Passare esattamente 1 parametro\n");
- exit(1);
- }
- int N = atoi(argv[1]);
- if(N <= 0 || N >= 255)
- {
- printf("N deve essere compreso tra 0 e 255, estremi esclusi.\n");
- exit(2);
- }
- int i;
- int *arr = malloc(sizeof(int) * N);
- for(i = 0; i < N; i++)
- {
- int pid = fork();
- if(pid == 0)
- {
- int ritchild = mia_random(100+1) + i;
- exit(ritchild);
- }
- arr[i] = pid;
- }
- for(i = 0; i < N; i++)
- {
- int status;
- int pidritorno = wait(&status);
- int ordine;
- int j;
- for(j = 0; j < N; j++)
- {
- if(arr[j] == pidritorno)
- {
- ordine = j;
- }
- }
- status = (status >> 8) & 0xFF;
- printf("PADRE: processo figlio terminato. PID=%d,ST=%d,ord=%d\n", pidritorno, status, ordine);
- }
- free(arr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement