Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #define N 5
- #define T 7
- int pidPerConcurente[N];
- int giri[N];
- int getConcurrentByPid(int pid){
- int i=0;
- while(pidPerConcurente[i] != pid)
- i++;
- return i+1;
- }
- int main(){
- int i;
- for(i=0; i<N; giri[i] = 0, i++){
- int temp = fork();
- if(!temp)
- execlp("./a", "./a", (char*)0);
- pidPerConcurente[i] = temp;
- }
- int status, finePid, finito=0;
- while(!finito){
- finePid = wait(&status);
- int c = getConcurrentByPid(finePid);
- giri[c-1] ++;
- if(giri[c-1] == T){
- printf("%d ha vinto\n", c);
- finito = 1;
- }else{
- printf("concorrente %d, ha concluso il suo %d giro\n", c, giri[c-1]);
- if(!(finePid = fork()))
- execlp("./a", "./a", (char*)0);
- pidPerConcurente[c-1] = finePid;
- }
- }
- for(i=0; i<N-1; wait(&status), i++);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement