#1 Problema de bloqueo de registros entre Linux y Windows
Buenas a tod@s:
estoy probando Linux + DOSEMU para reemplazar terminales con Windows (98 / XP)
que acceden a sistemas antiguos para DOS (FoxPro 2.6 y Clipper).
Hasta ahora funciona todo "casi" bien: los sistemas andan bajo DOSEMU, conectándose
a un servidor Windows o Linux vía SMB o CIFS, pero no funciona bien el bloqueo de
registros: me habilita a entrar en dos terminales y bloquear el mismo registro de una
base de datos compartida (en DOS / Windows me avisa en la 2da terminal que el
registro está bloqueado y no me deja seguir)
Probé con varios Linux (Ubuntu 7/8/9, TinyCore, DSL) como terminal y como servidor,
usando SMBFS y CIFS para conectarme al recurso compartido, pero siempre me
deja bloquear el registro en dos terminales (o en una terminal y el servidor)
concurrentemente.
Armé un programita en C para reproducir el error:
----
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <process.h>
#include <share.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
int handle, status;
long length;
handle = sopen("testlock.txt", O_RDONLY,SH_DENYNO,S_IREAD);
if (!handle)
{
printf("sopen failed\n");
exit(1);
}
length = filelength(handle);
status = lock(handle,0L,length/2);
if (status == 0)
printf("lock succeeded\n");
else
printf("lock failed\n");
printf ("Press a key...\n");
getch();
status = unlock(handle,0L,length/2);
if (status == 0)
printf("unlock succeeded\n");
else
printf("unlock failed\n");
close(handle);
return 0;
}
----
Alguna idea?
Gracias por adelantado
estoy probando Linux + DOSEMU para reemplazar terminales con Windows (98 / XP)
que acceden a sistemas antiguos para DOS (FoxPro 2.6 y Clipper).
Hasta ahora funciona todo "casi" bien: los sistemas andan bajo DOSEMU, conectándose
a un servidor Windows o Linux vía SMB o CIFS, pero no funciona bien el bloqueo de
registros: me habilita a entrar en dos terminales y bloquear el mismo registro de una
base de datos compartida (en DOS / Windows me avisa en la 2da terminal que el
registro está bloqueado y no me deja seguir)
Probé con varios Linux (Ubuntu 7/8/9, TinyCore, DSL) como terminal y como servidor,
usando SMBFS y CIFS para conectarme al recurso compartido, pero siempre me
deja bloquear el registro en dos terminales (o en una terminal y el servidor)
concurrentemente.
Armé un programita en C para reproducir el error:
----
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <process.h>
#include <share.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
int handle, status;
long length;
handle = sopen("testlock.txt", O_RDONLY,SH_DENYNO,S_IREAD);
if (!handle)
{
printf("sopen failed\n");
exit(1);
}
length = filelength(handle);
status = lock(handle,0L,length/2);
if (status == 0)
printf("lock succeeded\n");
else
printf("lock failed\n");
printf ("Press a key...\n");
getch();
status = unlock(handle,0L,length/2);
if (status == 0)
printf("unlock succeeded\n");
else
printf("unlock failed\n");
close(handle);
return 0;
}
----
Alguna idea?
Gracias por adelantado
0