• Lunes 6 de Mayo de 2024, 08:23

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - oitoungage

Páginas: [1]
1
C/C++ / basura al pasar por un pipe
« en: Domingo 28 de Diciembre de 2008, 20:19 »
Buenas! A ver si me podéis hechar una mano con esto, ya que llevo horas intentandolo y no me sale. Lo que quiero hacer es sencillo, Un codigo que imprima lo que hay en un fichero por pantalla utilizando un pipe. Con printf he visto que lo hace todo bien pero al imprimirlo por pantalla imprime por cada linea un caracter de basura (es decir, caracter tipo �)
El archivo se llama materiales.txt y contiene estas lineas:
111
222
333

Trabajo con la terminal de ubuntu con el comando gcc para compilar el fichero que se llama master.c
El codigo es el siguiente:

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <unistd.h>
  6. #include <fcntl.h>
  7.  
  8. main(){
  9.     int p[2], pid, n, variable;
  10.     FILE * fentrada;
  11.    
  12.     if ((fentrada = fopen("materiales.txt", "r")) == NULL){
  13.         printf("No se ha podido abrir el fichero materiales.txtn");
  14.         return (0);
  15.     }
  16.  
  17.     pipe(p);
  18.  
  19.     if ((pid=fork())==0){
  20.        
  21.         close(p[1]);
  22.         close(0);
  23.         dup(p[0]);
  24.         close(p[0]);
  25.        
  26.         while((n = (read(0, &variable, sizeof(variable)))) != 0){
  27.             write(1, &variable, sizeof(variable));
  28.         }
  29.  
  30.         return(0);
  31.     }
  32.  
  33.     while((n = (fscanf(fentrada,"%dn", &variable))) >= 0){
  34.         write(p[1], &variable, sizeof(variable));
  35.     }
  36.    
  37.     fclose(fentrada);
  38. }
  39.  
  40.  

Si alguien me puede ayudar le estaré muy agradecido.
Saludos.

Páginas: [1]