Newsgroup: it.comp.lang.c
Titolo: domanda su accesso a file in C

Salve a tutti,
debbo fare un Task che
1) legga un file sul quale un processo esterno può scrivere (in append) 
delle informazioni
2) elaborare tali informazioni e scrivere su una tabella il risultato di 
tali elaborazioni.
La mia idea è:
1) rinominare il file
2) leggere le stringhe contenute in quest'ultimo e scrivere su una tabella 
SQL
la domanda è:
se rinomino (quale funzione C mi consigliate?) il file mentre qualcun altro 
lo "blocca" perché ci sta scrivendo sopra,
cosa succede? mi becco un messaggio d'errore? come faccio ad eseguire il 
rename con la condizione che nessuno ci stia lavorando sopra?
Grazie a chi vorrà aiutarmi.
Ignorante 

 rename con la condizione che nessuno ci stia lavorando sopra?
Ma se lo rinomini il processo che ci scrive rischia di non trovare 
niente. Eventualmente lo dovresti copiare. Ma piů semplicemente credo 
che se un processo scrive su un file č comunque sempre possibile aprire 
il file in lettura da un altro processo. E' una prova che puoi fare 
facilmente sul tuo sistema operativo.
E.

 Ma se lo rinomini il processo che ci scrive rischia di non trovare niente.
non č vero perché scrive in append.


il file in lettura da un altro processo.
Non sempre, dipende dal sistema operativo. Windows, ad esempio, può
avere una modalità di apertura esclusiva che vieta qualsiasi accesso
ai processi esterni.

"Andrea Laforgia" <a.laf...@andrealaforgia.it.invalid> ha scritto nel 
messaggio news:kcumk3pgbvor75mka...@4ax.com...

ciao,
come posso aprire il file in modalità esclusiva?
grazie.

 come posso aprire il file in modalità esclusiva?
Sotto Windows con FileOpen(). Guarda la sua documentazione su MSDN.
p.s.: siamo OT qui dentro.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 p.s.: siamo OT qui dentro.
ti giuro che ho perso un ora su MSDN senza trovare la funzione FileOpen() da 
usare in C (uso MS Visual Studio 8).
mi puoi fornire cortesemente il link? (anche se dubito che lo 
troverai......)
grazie.
ciao,
Ignorante 

 C (uso Visual Studio 6).

 perso un ora su MSDN senza trovare la funzione FileOpen()
un po di fantasia e cercare OpenFile() no eh? :)
comunque, OpenFile() è deprecata, cerca CreateFile() gia che ci sei.

"camillo" <c.b@g.c> ha scritto nel messaggio 
news:ca%2j.180644$%k.31...@twister2.libero.it...

trovato, grazie
OpenFile()
http://msdn2.microsoft.com/en-us/library/aa365430.aspx
CreateFile()
http://msdn2.microsoft.com/en-us/library/aa363858.aspx
 

> C (uso Visual Studio 6).
Sei tu che devi scusarmi. Ovviamente è CreateFile(). 

Ciao,
in generale devi capire come viene scritto il file dal
processo esterno, io di solito, nel processo esterno, scrivo il file con 
un nome di comodo e alla fine della scrittura lo rinomino per farlo 
elaborare dal processo "remoto", che immagino sia costantemente 
impiegato nel controllare nuovi file nella directory di attesa.
Se scrivi direttamente il file il processo in attesa può accedere ad un 
file che non è ancora terminato (chiuso), con i problemi che derivano da 
un accesso contemporaneo della stessa risorsa e non completata(chiusa).
Luca
