Newsgroup: it.comp.lang.c
Titolo: C in ambiente unix: interazione con il filesystem

Ho bisogno di eseguire basilari operazione su file in ambiente unix.
Il programma č un prototipo di cache server, riceve una richiesta
e deve controllare se nella sua directory cache č presente,
altrimenti richiederlo altrove.
Si suppone che la cache possa contenere al piů n file.
Se il file non č presente in cache, ed essa č piena, una volta ricevuto deve
provvedere a eliminare quello riferito meno di recente (LRU) sostituendolo
con il nuovo.
Come posso recuperare i dati necessari dall'inode della directory e dai
file?
-- 
"Ciň che si ha per nulla non vale nulla"
Koala

 file?
opendir(),  readdir(), closedir(), rewinddir(), unlink(),
it.comp.linux.development (o qualsiasi altro NG dove si parla
di problematiche relative allo sviluppo sotto Unix).
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 > file?
Cmq se il problema è quello, e se è un esercizio scolastico, non ti serve
aprire l'elenco della directory. Un programma ti chiede un file. Se ce l'hai
glie lo passi e incrementi l'LRU, se no lo apri. Se non riesci ad aprirlo
allora lo dici al programma.
--- bye

 di problematiche relative allo sviluppo sotto Unix).
grazie mille!


 allora lo dici al programma.
ho bisogno cmq di contare i file presenti.
Se la cache contiene meno di n file, (e questo di base non lo posso
sapere), inserisco il file, altrimenti ne devo cancellare uno.
In ogni caso, pur essendo un progetto per un laboratorio scolastico,
è sempre un'ottima opportunità per imparare qualcosa di nuovo :)
-- 
"Ciò che si ha per nulla non vale nulla"
Koala

 di problematiche relative allo sviluppo sotto Unix).
ma esattamente cos'è IT od OT qui?
si parla di sviluppo in ambiente Unix, ma Unix è C,
mi riesce difficile separare le due cose
-- 
"Ciò che si ha per nulla non vale nulla"
Koala

 sapere), inserisco il file, altrimenti ne devo cancellare uno.
Eeeeh? Stai gestendo TU la cache. Sai TU quanti files stai tenendo in
memoria! Cosa ti interessa sapere quanti files hai in una directory?
Tu avrai in memoria un counter e un array. Il counter dice quanto l'array è
pieno, l'array contiene tutti i files che hai in cache.
--- bye

memoria!
   OT x OT: come specificato dall'OP, si tratta di un laboratorio
scolastico, qualunque critica di
funzionalita`/razionalita`/fattibilita`/ecc. viene a cadere. Lo scopo
e` solo didattico.
   Anche usare la ricorsione per implementare il calcolo di un
fattoriale (ai miei tempi si usava quest'esempio), al posto di un ben
piu` ovvio e banale 'for', e` da autolesionisti, ma in ambito
didattico si puo` fare.
-- 
S.L.

 didattico si puo` fare.
Sinceramente la ricorsione non l'ho mai apprezzata.
E' una soluzione compatta e stilisticamente elegante per i problemi
in genere, ma è poco efficiente.
Un'altra domanda, già che ci sono.
Quest'estate volevo scrivere un mail reader, giusto per fare un po
di pratica coi protocolli con una implementazione completa,
e stavo pensando a come realizzare l'interfaccia grafica.
Sapete darmi qualche consiglio?
Interfacce ne so scrivere solo in java, però mi sembra che si
possa fare anche in C++. Sapete consigliarmi qualche guida ben
fatta?


 pieno, l'array contiene tutti i files che hai in cache.
Nel momento in cui il processo dovesse venir riavviato o salva
le informazioni relative ai files presenti in uscita
o cmq le deve ricavare direttamente dall'inode.


 o cmq le deve ricavare direttamente dall'inode.
Ma tu intendevi una cache di tipo "proxy" (salva su disco in locale i files
remoti) o una pseudo-cache come quella del SO (salva in memoria gli ultimi x
files aperti)
--- bye

 files aperti)
salva in locale files remoti,
ma gestendone un numero molto limitato dovendo
quindi spesso sostituirli con altri richiesti
-- 
"Ciň che si ha per nulla non vale nulla"
Koala

 quindi spesso sostituirli con altri richiesti
Volendo puoi lo stesso lavorare solo con C standard per gestire i files. In
ogni caso dovrai gestire un "file indice" contenente le informazioni di uso
dei files, quindi puoi metterci anche i loro nomi. In questa maniera sarà
nel tuo file indice che ci saranno tutte le informazioni (nome del file, sue
dimensioni (ottenute con l'fseek + ftell), data ultimo uso ecc.).
--- bye

 fatta?
puoi scriverla anche in assembly [ nel caso pero` consiglio la
flagellazione, e` meno dolorosa ].
imho su it.comp.os.linux.developement sei piu` IT.
cmq
wxwindows
qt
gtk
c , c++, perl, python...
f/up impostato.
-- 
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.
    - Brian W. Kernighan

 mi riesce difficile separare le due cose
Unix e C sono due cose completamente distinte.
Quello che puoi fare con il "C" sotto Unix, non e' detto che tu
possa farlo su un sistema operativo diverso (e viceversa).


 possa farlo su un sistema operativo diverso (e viceversa).
non voglio fare nessun tipo di polemica (ci mancherebbe),
ma sempre di C si tratta:
č come parlare esclusivamente di cucina internazionale
o di cunica in generale (quindi anche di quella piů
"esotica")
in ogni caso in futuro mi rivolgerň a ng piů specifici,
grazie delle info :)
-- 
"Ciň che si ha per nulla non vale nulla"
Koala

 fatta?
Io utilizzo le librerie QT di Trolltech
http://www.trolltech.com/
che sono opensource, licenziate con GPL (entro certi limiti), scritte in C++
e multipiattaforma.
Le guide che puoi trovare sul sito
http://doc.trolltech.com/3.3/index.html
sono quanto di più completo e semplice ci possa essere per metterti in
condizione realizzare la tua prima GUI dopo poche ore di studio. Leggi con
attenzione "How to learn QT".
La cosa più carina è che puoi decidere di utilizzare direttamente le API che
la libreria ti mette a disposizione,
per la costruzione di finestre e widgets oppure disegnare la tua GUI con un
programma che si chiama appunto Designer e poi importare il codice
automaticamente generato dentro il tuo progetto.
Vale assolutamente la pena di conoscerle e provarle.
Ciao, Fabio.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/