elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Genericos en c pipes (void*)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Genericos en c pipes (void*)  (Leído 3,993 veces)
prosebas

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Genericos en c pipes (void*)
« en: 10 Abril 2021, 18:14 pm »

Buenos dias , soy nuevo en el lenguaje de c y estoy teniendo problemas a la hora de crear un función génerico para escribir o enviar el pipe.La función  funciona perfectamente sin el génerico pero con el genérico me esta pasando basura y me salta un error Segmentation Fault.
Código
  1. void write_pipe(int fd, void *buf, char *pipe)
  2. {
  3.    int flag = 0, bytes;
  4.    do
  5.    {
  6.        fd = open(pipe, O_WRONLY);
  7.        if (fd == -1)
  8.        {
  9.            perror("pipe");
  10.            printf(" Se volvera a intentar despues\n");
  11.            sleep(5);
  12.        }
  13.        else
  14.            flag = 1;
  15.    } while (flag == 0);
  16.    bytes = write(fd, buf, sizeof(buf));
  17.    printf("Sent it:%d\n", bytes);
  18.    close(fd);
  19. }
  20. void read_pipe(int fd, void *buf, char *pipe)
  21. {
  22.    int flag = 0, bytes;
  23.    do
  24.    {
  25.        fd = open(pipe, O_RDONLY);
  26.        if (fd == -1)
  27.        {
  28.            perror("pipe");
  29.            printf(" Se volvera a intentar despues\n");
  30.            sleep(5);
  31.        }
  32.        else
  33.            flag = 1;
  34.    } while (flag == 0);
  35.    bytes = read(fd, buf, sizeof(buf));
  36.    printf("Received it:%d\n", bytes);
  37.    close(fd);
  38. }
  39.  
>

Y asi llamo la función en el main
Código
  1. struct data dt;
  2. write_pipe(fd[0],(struct data*)&dt, argv[8]);
  3.  



En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Genericos en c pipes (void*)
« Respuesta #1 en: 10 Abril 2021, 19:29 pm »

Deberias depurar tu programa, asi sabrias en que linea/instruccion esta fallando exactamente.

Asi leyendo el codigo rapidamente sizeof(buf) no tiene sentido ya que es el tamaño de un puntero y no de la estructura que pasas, lo logico seria que pasaras tambien el tamaño del buffer a las funciones.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
prosebas

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Genericos en c pipes (void*)
« Respuesta #2 en: 10 Abril 2021, 21:08 pm »

Deberias depurar tu programa, asi sabrias en que linea/instruccion esta fallando exactamente.

Asi leyendo el codigo rapidamente sizeof(buf) no tiene sentido ya que es el tamaño de un puntero y no de la estructura que pasas, lo logico seria que pasaras tambien el tamaño del buffer a las funciones.

Solucionado

Gracias efectivamente ese era el error lo unico que hice fue agregar un parametro para el tamaño y ese lo pasa para el pipe.
Código
  1. void read_pipe(int fd, void *buf, size_t size, char *pipe);
  2. /*
  3.    Reserva msm;
  4.     read_pipe(fd[0], (Reserva *)&msm, sizeof(msm), pipe);
  5. */
  6.  
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Genericos en c pipes (void*)
« Respuesta #3 en: 10 Abril 2021, 21:19 pm »

De nadas  ::)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con tipos genericos...
Java
vacio 2 4,400 Último mensaje 15 Noviembre 2007, 19:19 pm
por vacio
Los cartuchos epson son genericos para esa marca
Hardware
hunter18 2 4,343 Último mensaje 14 Mayo 2011, 02:34 am
por Aprendiz-Oscuro
Los PC de marca son mejores que los genéricos
Noticias
wolfbcn 5 3,404 Último mensaje 3 Julio 2012, 00:45 am
por _Enko
diccionarios genericos wpa wpa2 psk orange vodafone wlan_xxx
Wireless en Linux
FeRnYyY 3 18,433 Último mensaje 20 Junio 2013, 00:17 am
por FeRnYyY
Cuáles son los pin genéricos de los modem sercom, sernet, arcadian, netcore etc...
Dudas Generales
José pro 1 3,053 Último mensaje 16 Agosto 2022, 20:08 pm
por stack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines