Operare con i file (Windows vs Unix/Linux)

Ciao,
cio che voglio affrontare in queste poche righe e mettere in evidenza una diffrenza nell'operare con i file tra Windows e Linux.

Windows purtroppo ci ha abituato a dare per scontato molte cose, tra cui questa: credo che la buona parte considera che un file aperto, non possa essere usato da altre applicazioni contemporaneamente?

Vero, sotto Windows, infatti all'atto di esecuzione di una open(...) in automatico windows lo segna in uso, impedendo l'accesso ad altri processi, finche non viene eseguita una close(...) oppure terminato lo script con una exit().

Cio' non accade sotto Unix/Linux, il compito bloccare l'accesso viene delegato al programmatore tramite l'invocazione di particolari funzioni.
Percui quando scrivete il vostro codice (sapendo che la destinazione e una macchina Linux/Unix) e' buona norma chiamare la funzione flock() per indicare al Sistema Operativo di segnare il file come in uso.

Blocca l'accesso al file: ovvio da usare subito dopo una open(...)
codice:
flock(FILEHANDLE, 2)
Libera l'accesso al file: da usare immediatamente prima di una close(...)
codice:
flock(FILEHANDLE, 8)
E possibile anche utilizzare il modulo: Fcntl ':flock' che importa delle costanti rappresentati i flags accettati da flock (nota: quel 2 o quel 8).
Per maggiori informazioni vi rimando alla pagina: http://www.perldoc.com/perl5.8.0/pod/func/flock.html


Autore: FreeMan

Buon divertimento e speriamo di non averle dette grosse!