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
|
int i, tube[2];
if (pipe(tube) == -1) {
perror("Ouverture pipe impossible");
exit(1);
}
i=fork();
if (i==0) {
/* process fils */
printf("on lance mpirun.\n");
close(1); /* fermeture sortie std */
dup2(tube[1], 1); /* redirection sortie std sur descripteur en ecriture du tube */
close(tube[0]); /* fermeture du descripteur inutilise */
execvp("mpirun", array_controls);
free(control);
// execlp("ls", "ls", NULL);
perror("Lancement de mpirun");
}
else {
int n;
char ch[1024];
/* process pere */
close (tube[1]);
while((n = read(tube[0], ch, 1023))) {
// fscanf(in,"%s", ch); // lecture du tube
ch[n] = 0;
send(new_fd, ch, n, 0);
recv(new_fd, ch, 4, 0);
printf("%s", ch);
fflush(0);
}
system("sleep 1");
send(new_fd, "finish", 6, 0);
recv(new_fd, ch, 4, 0);
// fclose(in);
} |
Partager