Hola, ¿es posible pasar más de un int por cada pipe o solo se puede pasar un dato por cada pipe?
Yo tengo 2 valores enteros que quiero enviárselos del proceso padre al hijo mediante una pipe.
Cuando envío los valores los meto en el vector enviar[2] y cuando los recibo los guardo en recibir[2].
Pero al recibirlo y mostrarlo me muestra unos caracteres raros.
Saludos y gracias!!
Yo tengo 2 valores enteros que quiero enviárselos del proceso padre al hijo mediante una pipe.
Cuando envío los valores los meto en el vector enviar[2] y cuando los recibo los guardo en recibir[2].
Pero al recibirlo y mostrarlo me muestra unos caracteres raros.
Código (c) [Seleccionar]
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <stdlib.h>
int pidh;
int i,j;
int B[2][2];
int pipe1[2];
int enviar[2];
int recibir[2];
int salirhijo=0;
int salirpadre=0;
void leer(){
for(i=0;i<2;i++){
read(pipe1[0],&recibir[i],sizeof(int));
}
//recibo los datos en el vector de 2 posiciones recibir[2].
printf("Los datos recibidos por la pipe son: %d y %d", recibir[0], recibir[1]);
}
int main(){
pipe(pipe1);
pidh=fork();
if(pidh == 0){ //hijo
signal(SIGUSR1,leer);
while(salirhijo == 0){
printf("Hijo esperando...\n");
sleep(1);
}
}else{ //padre
sleep(1);
for (i=0;i<3;i++){
for (j=0;j<3;j++){
B[i][j]= rand() % 10;
printf("%d ",B[i][j]);
sleep(1);
}
printf("\n");
}
printf("Elemento b11 -> %d\n",B[0][0]);
printf("Elemento b32 -> %d\n",B[2][1]);
//le voy a enviar 2 elementos al hijo por la pipe, para ello antes los meto en el vector enviar que es de 2 posiciones.
enviar[0] = B[0][0];
enviar[1] = B[2][1];
for(i=0;i<2;i++){
write(pipe1[1],&enviar[i],sizeof(int));
kill(pidh,SIGUSR1);
sleep(1);
}
}
}
Saludos y gracias!!