PDA

View Full Version : Dettagli configurazione e variabili d'ambiente


Gica78R
27-04-2005, 15:13
Ciao!

Sapete come fare per sapere quali sono TUTTE le variabili d'ambiente settate nel sistema ed il relativo valore? E' in una di queste variabili che si celano dettagli quali, ad esempio, il massimo numero di caratteri ammessi per il nome di un file o di una directory? Nelle varie librerie di sistema non riesco a trovare nulla di simile, anche perche' non so dove cercare esattamente... Credo che nemmeno 'grep' possa aiutarmi, non conoscendo nemmeno approssimativamente il nome di questa variabile :( (sara' qualcosa tipo PATH_MAX???)
Nemmeno in /proc/sys/ ho trovato nulla che mi aiutasse.
In realta' non riesco a trovare nemmeno quei file in cui e' definita la struttura degli inode, li sto aprendo un po' tutti :muro:

Idee? Grazie!

Gica

Psycotic
27-04-2005, 15:52
x le variabili.

set

Ziosilvio
27-04-2005, 16:17
Sapete come fare per sapere quali sono TUTTE le variabili d'ambiente settate nel sistema ed il relativo valore?
Prova a dare il comando "env".
E' in una di queste variabili che si celano dettagli quali, ad esempio, il massimo numero di caratteri ammessi per il nome di un file o di una directory?
Non saprei... non ho mai fatto un'indagine del genere.
Credo però che dovresti guardare le specifiche del filesystem, anziché le variabili di ambiente.

RaouL_BennetH
27-04-2005, 16:28
per visualizzare le variabili confermo anche io il comando 'env'.

kingv
27-04-2005, 17:22
Ciao!Nelle varie librerie di sistema non riesco a trovare nulla di simile, anche perche' non so dove cercare esattamente...



per certi dubbi i sorgenti del kernel sono l'unico posto dove puoi guardare.
se non sbaglio per ext2/ext3 il limite è di 255 caratteri per il nome file e 4095 per il path (globale, indipendentemente dal file system).

Gica78R
28-04-2005, 08:14
Allora... Per la lista delle variabili di ambiente ci siamo, pero' nessuna indica qual e' il numero massimo di caratteri consentito per un nome di file, ne' per un path. Ho parzialmente risolto scrivendo un programmino C e usando la libreria sys/vfs.h, nella quale e' definita la struttura statfs che contiene il campo f_namelen, che indica il valore massimo di caratteri consentiti per un filename. Attraverso la funzione int statfs(const char *path, struct statfs *buf) si ottengono (in buf) le varie informazioni, tra le quali quella che cerco. In particolare per un filesystem ext3 ho ottenuto per f_namelen il valore 255. Vi risulta?
E' corretto quindi dire che questo valore dipende dal tipo di filesystem e non dal sistema operativo?
Riguardo al numero massimo di caratteri per un path name, ancora nulla!

Grazie mille...

Gica

Gica78R
28-04-2005, 08:17
per certi dubbi i sorgenti del kernel sono l'unico posto dove puoi guardare.
se non sbaglio per ext2/ext3 il limite è di 255 caratteri per il nome file e 4095 per il path (globale, indipendentemente dal file system).
Scusa... non mi ero accorto che mi avevi gia' dato questa risposta cosi' precisa :stordita:
Quindi f_namelen e' giusto!
Grazie ancora!

kingv
28-04-2005, 09:21
Scusa... non mi ero accorto che mi avevi gia' dato questa risposta cosi' precisa :stordita:
Quindi f_namelen e' giusto!
Grazie ancora!



per la seconda domanda cercando in linux-2.6.10/include/linux/limits.h:
#define PATH_MAX 4096 /* # chars in a path name including nul */


dovrebbe essere quello, quindi 4095 caratteri

Gica78R
28-04-2005, 09:33
per la seconda domanda cercando in linux-2.6.10/include/linux/limits.h:
#define PATH_MAX 4096 /* # chars in a path name including nul */


dovrebbe essere quello, quindi 4095 caratteri
Grazie...

Supponendo di voler scrivere un programma abbastanza portabile tra diversi sistemi di tipo Unix, come si fa a determinare quel limite? Sapendo che il programma girera' solo su Linux, non ci sono problemi perche' si va a cercare in quella libreria, ma su altri sistemi? Lo so, e' piu' una domanda per la sez. programmazione, ma se sapete rispondermi qui...

Gica

Gica78R
28-04-2005, 11:28
Grazie...

Supponendo di voler scrivere un programma abbastanza portabile tra diversi sistemi di tipo Unix, come si fa a determinare quel limite? Sapendo che il programma girera' solo su Linux, non ci sono problemi perche' si va a cercare in quella libreria, ma su altri sistemi? Lo so, e' piu' una domanda per la sez. programmazione, ma se sapete rispondermi qui...

Gica
Mi rispondo da solo (l' ho provato :D ), mi basta includere nel programma l'header limits.h (standard ANSI) affinche' possa accedere anche a PATH_MAX, che e' definita in linux/limits.h.
Se c'e' qualche correzione o precisazione da fare... la accetto ben volentieri!


Grazie mille per la disponibilita',
Gica