[C] Manejo de archivos por dos equipos (No simultaneo) ~ Dropbox

Iniciado por Brandford, 27 Agosto 2013, 16:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Brandford

Saludos a todos

Hace dos días termine de desarrollar una aplicación 'Manejadora de Notas' programada en C.

Esta aplicación está totalmente funcional, cumple todo los requerimientos que necesito, y las pruebas que he realizado son buenas.

Básicamente esta aplicación está compuesta por una estructura base, con la cual se van llenando los archivos, aplicando métodos de búsqueda y eliminación como también copias de seguridad.

Código fragmentado vía pastebin
Citarhttp://pastebin.com/7acczELw

Netamente uso de fread() y fwrite()

Datos extras:
Sistema Operativo: Linux Debian Wheezy
Entorno de Desarrollo integrado: Anjuta

Una vez terminada la aplicación he generado un Tarball (tar.gz) y la he instalado, y luego de unas pruebas pude asegurarme de su buen funcionamiento

Los problemas comienzan acá, tuve la idea de instalar la aplicación en una Laptop con las mismas características antes mencionadas, con la intención de poder acceder a un archivo base en común, no simultáneamente, sino por separado aprovechando las ventajas de la sincronización de Dropbox.

Pero los resultados no fueron los que esperados, detallando, el ingreso de información al archivo lo hice desde el PC de escritorio y la lectura del archivo con el Laptop, y ahí me lleve una mala sorpresa, ya que el archivo fue mal reconocido, detectaba información pero distorsionada.

Pronto pondré una captura, por ahora puedo dar un ejemplo con datos parecidos
PC Escritorio (creador):
Numero Registro: 1
Numero Registro: 2
Numero Registro: 3
Numero Registro: 4
Numero Registro: 5

Laptop (no-creador):
Numero Registro: 1
Numero Registro: 0
Numero Registro: 14523
Numero Registro: 0
Numero Registro: 0

Las pruebas también las hice en un Disco Externo y los resultados fueron los mismos, por lo que puedo deducir que el medio de almacenamiento no importa, los problemas se producen cuando una aplicación distinta a la creadora del archivo accede al fichero
Debian Wheezy 64 bits

eferion

Estas guardando la información en bruto, sin formato. Imagino que lo que te sucede es que una arquitectura es big endian y la otra little endian. Ambas arquitecturas no son compatibles binariamente por cuestiones obvias.

Lo mejor cuando trabajas con diferentes arquitecturas (en resumen, diferentes pcs) es guardar la información en archivos con formato (XML por ejemplo).

La gran ventaja de estos sistemas es que el contenido del archivo se puede leer sin problemas en todas las arquitecturas. El inconveniente es que la lectura y escritura es un poco mas elaborada... Pero nada del otro mundo.

Brandford

#2
Se agradece eferion, tenías razón, el error de lectura se producía porque la arquitectura de los sistemas operativos que accedían a los archivos era diferente, PC de escritorio 32 bits y Laptop 64 bits. Teniendo un sistema operativo (Linux) bajo la misma arquitectura pueden compartir archivos sin problemas.
Debian Wheezy 64 bits