Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DoHITB en 14 Noviembre 2020, 17:26 pm



Título: Escribir fichero dejándolo accesible
Publicado por: DoHITB en 14 Noviembre 2020, 17:26 pm
Buenas tardes:

Codifiqué un programa que genera un log. Como el log solo se escribe bajo petición, estoy intentando dejar el fichero accesible para abrir cuando no esté en uso, pero no encuentro la manera.

Ahora mismo, hago un fclose tras cada escritura, para no retener el fichero, pero igualmente al intentar abrir el fichero (con Windows) me da error indicando que el fichero está en uso por otro proceso.

¿Hay alguna manera en que pueda dejarlo accesible?


Gracias.



Título: Re: Escribir fichero dejándolo accesible
Publicado por: AlbertoBSD en 14 Noviembre 2020, 20:45 pm
Depende de como lo maneje el sistema operativo, ahorita mismo acabo de testear este código en windows 10,

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5.  
  6. int main() {
  7. char buffer[200];
  8. FILE *archivo = fopen("archivo.txt","w");
  9. fprintf(archivo,"Log....\n");
  10. fgets(buffer,200,stdin); //Pausa
  11. fclose(archivo);
  12. }
  13.  

Y aparece el archivo en el navegador mientras el programa se sigue ejecutando, pero si lo abro con el bloc de notas apare en blanco, no es si no hasta que terminó el programa y vuelvo a abrir el archivo este ya aparece con el texto "Log..." Pero no me marca error ni me dice que este ocupado antes de finalizar el programa.

Saludos


Título: Re: Escribir fichero dejándolo accesible
Publicado por: DoHITB en 14 Noviembre 2020, 21:02 pm
Hola!

Con el fclose bastaba... tenía mal una condición que hacía que se volviera a hacer un fopen de manera incorrecta!

PD: Te salta el fichero en blanco porque los datos siguen en el buffer, si pones un fflush(archivo) te saldrán :-)

Saludos y gracias por la ayuda!