1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
int main(int argc,char **argv){
int p[2],j;
pid_t pid;
if(argc!=2)
fprintf(stderr,"nombre d'agument invalide\n");
if(pipe(p)==-1)
perror("impossible de créer le tube");
for(j=0;j<atoi(argv[1]);j++){
if((pid=fork())==-1)
perror("impossible de créer le processus");
else if(pid){
close(p[0]);
if(!j){
int i=0;
write(p[1],&i,sizeof(int));
}
close(p[1]);
wait(NULL);
}
else{
int i;
read(p[0],&i,sizeof(int));
close(p[0]);
printf("%d\n",i);
i++;
write(p[1],&i,sizeof(int));
close(p[1]);
}
}
} |
Partager