Jogger.pl


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.

Poprawiłem rozjechany kod.