• Miércoles 15 de Mayo de 2024, 07:44

Autor Tema:  Trabajar Con Ficheros Grandes (>2.1 Gb)  (Leído 1915 veces)

josep_fi

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Trabajar Con Ficheros Grandes (>2.1 Gb)
« en: Viernes 16 de Marzo de 2007, 18:23 »
0
Hola buenas!!!!!!!!!!!!!!!!!!!!!!!!!!

Necesito trabajar en c/c++, en entorno unix (compilando con gcc) con ficheros grandes de mas de 2,1 Gb.

Al usar las funciones tipicas fopen, etc...no funciona con estos ficheros (no puedo abrir ficheros de mas de 2,1Gb).

He probado trabajando directamente con funciones que realizan llamadas al sistema, y trabajar con filedescriptors. open y close me van bien para abrir ficheros de tamaño superior a 2,1 Gb.

PERO necesito moverme por el fichero, escribir y leer. La funcion fseek no me va ya que es para trabajar con ficheros, pero lseek que trabaja con filedescriptors tampoco me va, no puedo posicionerme en posiciones superiores a los 2,1 Gb.

:(

He probado a compilar con varios defines (#define _LARGEFILE_SOURCE, #define _LARGEFILE64_SOURCE, #define _FILE_OFFSET_BITS 64) y el abir el fichero con open, añado el flag O_LARGEFILE, pero no he conseguido nada.

Alguna idea??? (alguna clase ya creada para trabajar con files grandes, ... lo que sea.....!!!!)

Gracias anticipadas!!!!

(llevo dias con esto y no hay manera!!!!)


Un saludo!!!!!!!!!


Josep.

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Trabajar Con Ficheros Grandes (>2.1 Gb)
« Respuesta #1 en: Viernes 16 de Marzo de 2007, 18:37 »
0

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Trabajar Con Ficheros Grandes (>2.1 Gb)
« Respuesta #2 en: Viernes 16 de Marzo de 2007, 23:32 »
0
yo creo que lo mejor seria pensar en utilizar si es posible un motor de bases de datos, porque no le veo sentido a algo asi.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Trabajar Con Ficheros Grandes (>2.1 Gb)
« Respuesta #3 en: Viernes 16 de Marzo de 2007, 23:47 »
0
La verdad es que se me hace raro, yo puedo trabajar (y si lo he hecho) con archivos de mas de 2 G en Perl, eso quiere decir que en C/C++ o cualquier otro si lo podes hacer.
Tambien se de alguien que ha trabajado con imagenes de 10G o mas en Perl.

Ahora, si estas metiendo todo el archivo en memoria, no hay forma... tenes que trabajarlo por partes un un bucle.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

josep_fi

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Trabajar Con Ficheros Grandes (>2.1 Gb)
« Respuesta #4 en: Lunes 19 de Marzo de 2007, 15:37 »
0
Gracias Bob esponja!!

Me fue bastante bien el link ke me pasaste. (puede compilar una prueba accediendo y moviendome a mi antojo por ficheros de hasta 10 gigas usando las funciones fopen64, y fseeko64).

Ahora el problema lo tengo para llevar esto al entorno de trabajo actual en que me encuentro.

La prueba la realize con gcc 3.3.5 (que usa glibc 2.2) y funciona perfectamente ( y rapido).

En el entorno en que estoy el compilador es gcc 2.95 (que no se que version de glibc utiliza) y ahy la misma prueba no se puede compilar.

Estoy abligado a compilar con esta version de gcc ya que utilizo unas librerias (de las cual no disponemos codigo) compiladas con la version 2.95. Si intento compilar utilizando esas librerias con otra version diferente del compilador (por ejemplo la 3.3) me es imposible compilar.

Gracias por ayudarme en el primer paso!!! :D

¿?Alguna idea sobre, como compilar un codigo en gcc 3.3 utilizando librerias (*.so) creadas con gcc 2.95? Hay algun problema al hacer esto?

¿?Puedo compilar con la version de gcc 2.95 y hacer que las funciones de 64 bits (tipo fopen 64...etc) me funcionen? como? he de cambiar alguna libreria o incluir algo mas?

Bueno GRacias people!!

SALUDOS!!!

Josep

 :kicking: