C/Visual C - problema con cerrojo de escritura

 
Vista:

problema con cerrojo de escritura

Publicado por ruben (4 intervenciones) el 16/12/2007 21:55:12
Hola me estoy volviendo loco para escribir un programa que establezca un simple cerrojo de escritura sobre un fichero. Lo que hecho hasta ahora es esto:

#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>

main(void)
{
int fd;
creat("fichprueba",0777);
fd=open("fichprueba",O_WRONLY,0777);

//datos para escribir en el fichero para ver si el cerrojo funciona
char buffer[] = { 'x' , 'y' , 'z' };

struct flock ce;
ce.l_type=F_WRLCK;
ce.l_whence=SEEK_SET;
ce.l_start=0;
ce.l_len=0;

fcntl(fd,F_SETLK,&ce)==-1?printf("error en el bloqueo "):printf("todo bien(se ha bloqueado) ");

write (fd,buffer,sizeof(buffer))==-1?printf("no se pudo escribir "):printf("se ha escrito ");
close (fd);

}
Cuando lo ejecuto me dice que el fichero ha sido bloqueado, pero tambien que se ha escrito en el fichero, y de hecho eso es lo que sucede.
Antes, en vez de open y write usaba fopen y fwrite, pero tuve que cambiarlo porque de ese modo no conseguia obtener un descriptor de fichero del tipo adecuado (int) para pasarle a fcntl como primer argumento. ¿Alguien sabe que es lo que estoy haciendo ahora mal?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con cerrojo de escritura

Publicado por Tom (619 intervenciones) el 17/12/2007 11:02:51
Me parece que, como es lógico, el proceso que bloquea el fichero __sí__ puede escribir en él.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con cerrojo de escritura

Publicado por ruben (4 intervenciones) el 17/12/2007 23:22:07
no me habia dado cuenta de eso, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar