Oryginalny komentarz
zechcialo mi sie sciagnac mingw i sprawdzic jak otworzyc plik zeby sie nie dalo go w tym czasie odczytac…
wynik jest taki:
—-
cf1.c:
—-cut-here—-
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define FILE_SHARE_NOSHARE 0×00000000 /*tak dla czytelnosci – w dokumentacji jest ‘0’*/
int main(int argc, char** argv)
{
char* filepath = „mingw-runtime-3.12.tar.gz”;
HANDLE hFile = CreateFileA(filepath, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_NOSHARE, NULL, OPEN_EXISTING, 0, NULL);
if ( hFile == INVALID_HANDLE_VALUE) {
printf („buuu… „);
}
int i=60;
while (i>0)
{
Sleep(1000);
printf(”.”);
}
CloseHandle(hFile);
return 0;
}
—-cut-here—-
$ gcc -Wall -O2 -o cf1 cf1.c
$ cf1
—-
jakakolwiek proba odczytu „mingw-runtime-3.12.tar.gz” konczy sie: „File sharing violation”
zasadniczo o to mi chodzilo mowiac o plikach otwartych na wylacznosc…
przegladarka otwiera tak plik (np z filmem) i trzyma go gdzies w tempie – proba jego odczytu spelza na niczym… ale ze firefox np trzyma to jednoczesnie (redundancja… – boi sie zeby mu nie wsiakl?-) w swoim cache’u to juz sprawe ulatwia – mozna i tak.
Zmodyfikowany komentarz
zechcialo mi sie sciagnac mingw i sprawdzic jak otworzyc plik zeby sie nie dalo go w tym czasie odczytac…
wynik jest taki:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define FILE_SHARE_NOSHARE 0x00000000 /* pro forma - for better understaning */
int main(int argc, char** argv)
{
char* filepath = "mingw-runtime-3.12.tar.gz"; // name of file to "lock"; could be argv[1]
//HANDLE hFile = CreateFileA(filepath, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); // from doc
HANDLE hFile = CreateFileA (filepath,\
GENERIC_READ|GENERIC_WRITE,\
FILE_SHARE_NOSHARE,\ /* tu jest pies pogrzebany!!, w razie kompilacji trzeba jednakze ten komentarz wywalic! */
NULL,\
OPEN_EXISTING,\
0,\
NULL);
if ( hFile == INVALID_HANDLE_VALUE) {
printf ("buuu... ");
exit (1);
}
int i=60; // just 4 testing - sleep for a minute...
while (--i>0)
{
Sleep(1000);
printf(".");
}
CloseHandle(hFile);
return 0; // pro forma
}
jakakolwiek proba odczytu „mingw-runtime-3.12.tar.gz” konczy sie: „File sharing violation”
zasadniczo o to mi chodzilo mowiac o plikach otwartych na wylacznosc…
przegladarka otwiera tak plik (np z filmem) i trzyma go gdzies w tempie – proba jego odczytu spelza na niczym… ale ze firefox np trzyma to jednoczesnie (redundancja… – boi sie zeby mu nie wsiakl?-) w swoim cache’u to juz sprawe ulatwia – mozna i tak.