Bonjour,
je veux créer n processus, chaque processus incrémente un entier i et le transmet au processus suivant via un tube.

j'obtiens:
./boucleProc 3
0
0
1
0
alors que je devrais avoir:
./boucleProc 3
0
1
2


Pourquoi mon code ne marche pas?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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]);
    }
  }
}
Merci d'avance pour votre aide !