.[ ČeskéHry.cz ].
Je soubor otevřený pro zápis?

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
frca



Založen: 28. 07. 2007
Příspěvky: 1553

PříspěvekZaslal: 22. únor 2013, 22:01:42    Předmět: Je soubor otevřený pro zápis? Odpovědět s citátem

Dá se nějak zjistit, jestli je konkrétní soubor už otevřený pro zápis? Do widlí se mi teď nechce restartovat, ale na linuxu úplně v pohodě pro zápis zároveň otevřu několikrát ten samý soubor.
Díky.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Tringi



Založen: 28. 07. 2007
Příspěvky: 289

PříspěvekZaslal: 23. únor 2013, 00:35:29    Předmět: Odpovědět s citátem

Nejnižší zdokumentovaný způsob otevření souboru na Windows je zavolat CreateFile.
Třetím parametrem definuješ exkluzivitu. Zadáš-li zde FILE_SHARE_WRITE, dovoluješ soubor otevřít pro zápis vícekrát, pokud tento příznak vynecháš, soubor se ti otevře pro zápis výhradně, nebo vůbec (s chybou ERROR_SHARING_VIOLATION) pokud již jej někdo jiný pro zápis otevřený má.

Posixové fopen neotevírá exkluzivně. C11 (nejsem si stoprocentně jistý) výhradní otevření podporuje, přidáním znaku "x" na konec mode stringu. Posix funkce open k tomu má příznak O_EXCL.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
frca



Založen: 28. 07. 2007
Příspěvky: 1553

PříspěvekZaslal: 23. únor 2013, 07:24:37    Předmět: Odpovědět s citátem

Podle dokumentace je to "x" i O_EXCL řízeno existencí souboru (existuje -> fail). Já chci otevřít pro zápis soubor, i když existuje. Jenom nechci zapisovat do jednoho souboru z více procesů, ale to musím být schopný nějak zdetekovat, že je daný soubor již otevřen.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Tringi



Založen: 28. 07. 2007
Příspěvky: 289

PříspěvekZaslal: 23. únor 2013, 13:01:28    Předmět: Odpovědět s citátem

OK, skenoval jsem text asi moc rychle, pak rychlé google: open_excl?
Na Windows je to triviální případ a má odpověď stále platí.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna