Jaký je vztah mezi PATH_MAX a NAME_MAX, a jak je mohu získat?

hlasů
5

V roce limits.h, a na různých místech v manuálových stránkách POSIX existují zmínky o PATH_MAXa NAME_MAX. Jak se tito se vztahují k sobě navzájem? Kde je oficiální dokumentace pro ně? Jak mohu získat z nich v době běhu, a (v případě potřeby) kompilaci pro C, Python, a GNU (Shell) prostředí?

Položena 24/07/2010 v 16:12
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
4

PATH_MAXje maximální délka souborového systému dráhy. NAME_MAXje maximální délka názvu souboru (v konkrétním místě). Takže, /foo/barje omezen PATH_MAX, a to pouze barčást je jeho délka omezena NAME_MAX.

Ty dostanete v běhu přes pathconfjak _PC_PATH_MAXa _PC_NAME_MAX, ačkoli běžná praxe je obvykle stačí použít statické makra v době kompilace. Myslím, že by bylo lepší použít možnost run-time, protože byste mohli potenciálně podporují delší hodnoty tímto způsobem, ale nejsem si jistý, co (pokud vůbec) systémy skutečně poskytují výnos z pathconfnichž je vyšší než hodnota z POSIX_FOO_MAXhodnot.

Odpovězeno 24/07/2010 v 16:18
zdroj uživatelem

hlasů
0

Na většině operačních systémů, PATH_MAXby neměly být definovány vůbec. Mělo by to být definován pouze vůbec, v případě, že operační systém má maximální délku řetězce, který popisuje cestu, kterou většina operační systém nemají; V takových případech byste měli dostat chybu, pokud používáte PATH_MAXmimo makro.

Měli byste se vyhnout se spoléhat na existenci PATH_MAXa snaží se ji ignorovat v jeho celistvosti.

Že PATH_MAXvůbec existuje, na většině operačních systémů, je vlastně chyba. Pokud je mi známo, jen operační systémy Windows jej skutečně ctít.

Odpovězeno 21/03/2015 v 03:35
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more