Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

File locking on windows.

[es] :: Perl :: File locking on windows.

[ Pregleda: 2891 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Free_Sex
Aleksandar
Beograd

Član broj: 9601
Poruke: 616
*.vdial.verat.net



Profil

icon File locking on windows.15.01.2004. u 20:14 - pre 246 meseci
Dakle kako da osiguram da dok jedan skript pise u fajl drugi to ne moze ?

Na windowsu .... za *nix znam flock file,...

Provera tipa dali postoji fajl sa if(-e $fajl) pa ako ne postoji da ga krejiram ne znam bas kako ce da radi, jer moze da dodje do race conditions-a ?
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: File locking on windows.16.01.2004. u 15:32 - pre 246 meseci
Slobodni_Seksu, da si malo guglao okolo sigurno bi nasao nacin koji
koriste programeri da naprave portabilno zakljucavanje fajlova. Sistem
se sastoji u sledecem:
"atomicno" se kreira fajl koji se zove (prema konvenciji) zove ISTO kao
fajl sa kojim zelis da "baratas", s tim da ima ekstenziju .lck sledecim
kodom:
Code:

#include <fcntl.h>     // open()
#include <errno.h>     // errno()
#include <stdio.h>     // perror()

int fd;
fd=open("mojfajl.lck", O_WRONLY | O_CREAT | O_EXCL);


Odmah da napomenem da je ovo O_EXCL najbitnije od svega, i to zapravo
znaci ono "atomicno kreiranje" koje sam spomenuo na pocetku. Radi se o
tome da NE ZELIMO da nam neki drugi proces u toku samog procesa
otvaranja uleti i otvori mojfajl.lck! :) Dakle, zbog konkurencije...

Nakon ovoga moramo proverimo status fd-a i tu imamo tri slucaja:

1) fd<0 && errno==EEXIST - drugi proces je zakljucao fajl (zapravo je
kreirao mojfajl.lck , treba samo malo sacekati i pokusati ponovo "doci
do kljuca"):)

2) fd<0 - neka greska se desila prilikom kreiranja fajla (ne moze se
nastaviti sa radom)

3) u svakom drugom slucaju mi smo uspeli da otvorimo mojfajl.lck i na
taj nacin cemo "zakljucati" mojfajl.EXT, gde je EXT neka ekstenzija -
ovo je zapravo fajl sa kojim se radi u aplikaciji.

Kada se odradi posao koji treba sa mojfajl.EXT (nesto se upise, iscita,
obrise, ...), onda treba OBRISATI mojfajl.lck, cime se mojfajl.EXT
"otkljucava".

Za ovaj sistem potrebno je da svi procesi koji rade sa mojfajl.EXT budu
"nauceni" o svemu gore navedenom.

Pozdrav

Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: File locking on windows.16.01.2004. u 18:26 - pre 246 meseci
Ja se zaista izvinjavam, nisam video uopste koja je ovo diskusija! :(
Ali, u principu je stvar slicna u bilo kom jeziku! :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Free_Sex
Aleksandar
Beograd

Član broj: 9601
Poruke: 616
*.vdial.verat.net



Profil

icon Re: File locking on windows.17.01.2004. u 11:24 - pre 246 meseci
Ma nema veze. Nesto sam nacuo za to ... doduse nizao znao da je to "konvencija".
A bogami je napisano i da nije bas tako sigurno od racing conditionsa ... ? Ali bolje ista nego nista. Nego posto je potrebno da jedan line izbacim iz fajla, to ustvari znaci da ucitam ceo fajl i da zatim zapisem opet sve ostale sem njega, a tu moze bas da se zezne. Ma kad nikako da namestim mysql kod mene na kompu da radi :(

A inace sto se tice C-a, ni to nije problem. Laslo Kraus je ipak u pitanju. Samo je PERL mnogo, mnogo lepsi za raditi u njemu :D
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: File locking on windows.18.01.2004. u 17:45 - pre 246 meseci
Ako se u svim procesima koji treba da zakljucavaju/otkljucavaju
data-fajl pridrzavas gore recenog, onda neces doci do race condition-a
100%. Do race condition-a se moze doci i sa drugim, sigurnijim metodama.
Dakle, sve je do programera.

Ja ti nisam dao savrseno resenje, vec portabilno i jednostavno, koje
koristi dosta ljudi kad nemaju drugu alternativu.

Pozdrav :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Free_Sex
Aleksandar
Beograd

Član broj: 9601
Poruke: 616
*.vdial.verat.net



Profil

icon Re: File locking on windows.20.01.2004. u 12:09 - pre 246 meseci
Dobro to se podrazumeva da je potrebno da svi programi/procesi koji ce da pristupaju tom fajlu, se pridrzavaju tog pravila, kako bi sve to funkcionisao.

Ali nema veze, koliko sam skapirao, flock() funkcija ne radi samo na "slabijim" verzijama windowsa kao sto su 9x i me. Dok na NT i XP radi.

Cisto sumljam da bilogde u svetu imaju server sa 9x windowsom. Mislim web/mail server na kojem bi i izvrsavali moju skriptu.

U svakom slucaju hvala, mozda zatreba za nesto kad budem pisao u C-u ili slicno.
(mada i tamo treba da ima fcntl.h i flock funkcija ...)
 
Odgovor na temu

[es] :: Perl :: File locking on windows.

[ Pregleda: 2891 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.