Hvordan laver jeg en simpel låsning af en fil i C? Således den kun kan åbnes af een af gangen? Hverken open eller fopen låser åbenbart filen, heller ikke når den åbnes i write mode.
The LockFile function locks a region in an open file. Locking a region prevents other processes from accessing the region.
BOOL LockFile( HANDLE hFile, // handle of file to lock DWORD dwFileOffsetLow, // low-order word of lock region offset DWORD dwFileOffsetHigh, // high-order word of lock region offset DWORD nNumberOfBytesToLockLow, // low-order word of length to lock DWORD nNumberOfBytesToLockHigh // high-order word of length to lock );
Hvis du skulle få lyst til at låse filen op igen kan du bruge UnlockFile:
The UnlockFile function unlocks a region in an open file. Unlocking a region enables other processes to access the region.
BOOL UnlockFile( HANDLE hFile, // handle of file to unlock DWORD dwFileOffsetLow, // low-order word of lock region offset DWORD dwFileOffsetHigh, // high-order word of lock region offset DWORD nNumberOfBytesToUnlockLow, // low-order word of length to unlock DWORD nNumberOfBytesToUnlockHigh // high-order word of length to unlock );
> Hvilken platform ? Windows ? Linux ? Strict standard due to portability requirement ?
Jeg havde troet der var en cross-platform standard - men der er der åbenbart ikke. Lige nu udvikler jeg på Mac OSX, men når det er færdigt skal det nok op på en Linux.
Hvorfor skal du have låst din fil? Skal du lave et flerbruger system? Hvis ja, så kan du vel bruge noget mutex_lock...
Synes godt om
Slettet bruger
15. juni 2003 - 13:34#11
Ja det er til et CGI script. Jeg arbejder nu med an skyggefil - som jeg opretter og sletter igen, problemet er bare at der ikke kun en eller to men 10.000 vis af filer der kan låses. Det er en masse skyggefiler, der skal holdes rede i. Og hvis der er en skyggefil der ikke lige bliver slettet igen (hvis programmet går ned eller hvad ved jeg), er filen permanent låst.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.