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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas con los FIFOs
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con los FIFOs  (Leído 1,193 veces)
4dr14n31t0r

Desconectado Desconectado

Mensajes: 85



Ver Perfil
Problemas con los FIFOs
« en: 5 Noviembre 2016, 21:25 pm »

En un archivo tengo el siguiente codigo fuente:
Código
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3.  
  4. int main(void){
  5.    mkfifo("FIFO",0777);
  6.    int fd = open("FIFO",O_WRONLY);
  7.    int n = 1234;
  8.    puts("ESCRIBIENDO DATO\n");
  9.    write(fd,&n,sizeof(int));
  10.    puts("DATO ESCRITO\n");
  11.    close(fd);
  12.    return 0;
  13. }

Y en otro, este:
Código
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3.  
  4. int main(vodi){
  5.    int fd = open("FIFO",O_RDONLY);
  6.    int n;
  7.    puts("LEYENDO DATO\n");
  8.    read(fd,&n,sizeof(int));
  9.    printf("DATO LEIDO: %d\n",n);
  10.    read(fd,&n,sizeof(int));
  11.    printf("DATO LEIDO OTRA VEZ: %d\n",n);
  12.    close(fd);
  13.    return 0;
  14. }

Ejecuto el primer programa en segundo plano, y despues el segundo programa, y la salida que generan es la siguiente:
Código:
ESCRIBIENDO DATO

DATO ESCRITO
LEYENDO DATO

DATO LEIDO: 1234
DATO LEIDO OTRA VEZ: 1234
Según tengo entendido, cuando un programa lee de un fifo y en este no quedan datos que leer, espera a que otro programa escriba algo en el para leer.
¿Por qué lee 2 veces el mismo dato en vez de quedarse bloqueado hasta que algún otro programa vuelva a escribir en el fifo?
Es mas, ¿Por qué entre "ESCRIBIENDO DATO" y "DATO ESCRITO" hay dos lineas cuando solo imprimo una al final de cada mensaje?
¿Se os ocurre alguna forma de hacer que el programa se detenga hasta que no se escriban nuevos datos en el fifo en vez de leer 2 veces el mismo dato?


« Última modificación: 5 Noviembre 2016, 21:28 pm por 4dr14n31t0r » En línea

4dr14n31t0r

Desconectado Desconectado

Mensajes: 85



Ver Perfil
Re: Problemas con los FIFOs
« Respuesta #1 en: 7 Noviembre 2016, 15:36 pm »

Solucionado: El problema estaba en que estaba probando el programa en una maquina virtual de ubuntu, y por alguna razon que nunca alcanzaré a entender en esa maquina virtual aun siendo igual no se paraba cuando debia pero despues en otro ordenador que tengo ubuntu como sistema operativo si


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines