Hola tengo un problema que me tiene atascado y seguramente sera un chorrada.
Tengo un programa padre que crea x hijos. Pues bien, los hijos le tienen que devolver al padre un valor float y el padre después deberá valorar esos valores. La comunicación hay que hacerla por pipes y no me aclaro. Os paso el código que tengo por si podéis ayudar.
padre.c
.
.
.
if (pipe(p) < 0) error("Creació pipe");
for (i = 0; i < n; i++) {
switch (pid = fork()) {
case -1: error("fork");
case 0:
close(p[0]); //ok
// close(0);
dup(p[0]);
execv(args[0], args);
error("exec");
default:
sprintf(s, "%s[%d] pid=%d created%sn", color_blue, getpid(), pid, color_end);
if (write(1, s, strlen(s)) < 0) error("write");
}
}
for (i = 0; i < n; i++) {
close(p[1]); //ok
read(p[0], &m, 5);
//sprintf(s, "%c", read(p[0], &m, 5));
write(p[0], &m, strlen(m));
pid = wait(&st);
.
.
.
hijo.c
.
.
.
write(p[1], "Holan", 5);
close(p[1]);
exit(0)