comunicación bidireccional entre procesos padre e hijo
Publicado por Charly (5 intervenciones) el 30/10/2017 11:48:36
Hola, me han mandado crear un programa con Pipes que permita la comunicación bidireccional entre un proceso padre y otro hijo.
Necesito que hablen alternativamente uno y otro, es decir:
PADRE ENVIA MENSAJE.
HIJO RECIBE MENSAJE de PADRE: Saludos del Padre. .
HIJO ENVIA MENSAJE a su PADRE.
PADRE RECIBE MENSAJE del HIJO: Saludos del hijo. . .
Este el el código que he escrito:
No sé que he hecho mal, pero solo me ejecuta la última fila de cada uno.
Necesito que hablen alternativamente uno y otro, es decir:
PADRE ENVIA MENSAJE.
HIJO RECIBE MENSAJE de PADRE: Saludos del Padre. .
HIJO ENVIA MENSAJE a su PADRE.
PADRE RECIBE MENSAJE del HIJO: Saludos del hijo. . .
Este el el código que he escrito:
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
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#define SIZE 512
int main(int argc,char **argv){
pid_t pid;
int a[2],b[2],readbytes;
char buffer[SIZE];
pipe(a);
pipe(b);
if((pid=fork())==0){//hijo
close(a[1]);//cerramos el lado de escritura del pipe
close(b[0]);//cerramos el lado de lectura del pipe
while((readbytes=read(a[0],buffer,SIZE))>0){
write(1,buffer,readbytes);
}
close(a[0]);
strcpy(buffer,"HIJO RECIBE MENSAJE DE PADRE: ");
strcpy(buffer,"HIJO ENVIA MENSAJE a su PADRE.\n");
strcpy(buffer,"Saludos del Hijo...\n");
write(b[1],buffer,strlen(buffer));
close(b[1]);
}else{//padre
close(a[0]);//cerramos el lado de lectura del pipe
close(b[1]);//cerramos el lado de escritura del pipe
strcpy(buffer,"PADRE ENVIA MENSAJE.\n");
strcpy(buffer,"Saludos del Padre..\n");
strcpy(buffer,"PADRE RECIBE MENSAJE del HIJO: ");
write(a[1],buffer,strlen(buffer));
close(a[1]);
while((readbytes=read(b[0],buffer,SIZE))>0){
write(1,buffer,readbytes);
}
close(b[0]);
}
waitpid(pid,NULL,0);
exit(0);
}
No sé que he hecho mal, pero solo me ejecuta la última fila de cada uno.
Valora esta pregunta


0