|
|
|||||||||||||||||||||||||
|
IntroducciónPerl tiene una función llamada flock() que sirve para "cerrar" los archivos mientras los estas utilizando. Esta función solo puede ser utilizada en UNIX debido a que no esta implementada en Windows. ¿Por qué es necesario?Digamos que tienes un script que permite a las personas que navegan en tu sitio dejar un mensaje, y este mensaje lo escribes sobre un archivo que se llama "mensajes.txt", entonces veamos una pequeña linea de acciones:
Si un archivo es accesado al mismo tiempo para realizar dos acciones diferentes, puede ocasionar ya sea que se corrompa el archivo o información incompleta. Para evitar esto perl tiene implementada la función flock(). Tipos de flock()Hay distintos tipos de flock() pero esta vez vamos a ver sólo dos, que creó que son los mas utilizados. flock(IDENTIFICADOR_ARCHIVO,1); #bloquea el archivo para que solo pueda ser leído
flock(IDENTIFICADOR_ARCHIVO,2); #bloquea el archivo por completo
Como vemos usaríamos el primer flock() en caso de que sólo estemos leyendo el archivo para evitar que se intente modificarlo mientras tanto, por ejemplo:
open(FILE, "mensajes.txt");
flock(FILE,1); my @mensajes = <FILE>; close(FILE); En el segundo caso bloquea el archivo por completo para evitar que se lea o se modifique mientras se esta utilizando:
open(FILE, ">>mensajes.txt");
flock(FILE,2); print FILE "milinea\n"; close(FILE); ConclusionesYa vimos como bloquear nuestros archivos cuando los estamos utilizando, de esta manera podemos evitar tener archivos corruptos o recibir mala información. Si estamos haciendo código para Windows como para UNIX podríamos incluir una variable para preguntar cual es el sistema operativo: my $os = "windows";
Ya de esa manera podemos aumentar en nuestras lineas de flock() lo siguiente: flock(IDENTIFICADOR,1) if $os !~ /windows/i;
|
||||||||||||||||||||||||
|
|||||||||||||||||||||||||