realpath(3) Library Functions Manual realpath(3) NUME realpath - returneaza numele de ruta absolut canonizat BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include #include char *realpath(const char *restrict path, char *restrict resolved_path); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): realpath(): _XOPEN_SOURCE >= 500 || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE DESCRIERE realpath() extinde toate legaturile simbolice i rezolva referinele la caracterele /./, /../ i la caracterele suplimentare '/' din irul cu terminaie nula numit de path pentru a produce un nume de ruta absolut canonizat. Numele de ruta rezultat este stocat sub forma unui ir cu terminaie nula, pana la un maxim de PATH_MAX octei, in memoria tampon indicata de resolved_path. Ruta rezultata nu va avea nici o legatura simbolica, nici componente /./ sau /../. Daca resolved_path este specificat ca fiind NULL, atunci realpath() utilizeaza malloc(3) pentru a aloca o memorie tampon de pana la PATH_MAX octei pentru a pastra numele de ruta rezolvat i returneaza un indicator la aceasta memorie tampon. Apelantul ar trebui sa elibereze aceasta memorie tampon folosind free(3). VALOAREA RETURNATA Daca nu exista nicio eroare, realpath() returneaza un indicator catre resolved_path. In caz contrar, se returneaza NULL, coninutul matricei resolved_path este nedefinit, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EACCES Permisiunea de citire sau de cautare a fost refuzata pentru o componenta a prefixului rutei. EINVAL path este NULL; (inainte de glibc 2.3, aceasta eroare este returnata i daca resolved_path este NULL). EIO A aparut o eroare de In/Ie in timpul citirii din sistemul de fiiere. ELOOP S-au intalnit prea multe legaturi simbolice la conversia numelui de ruta. ENAMETOOLONG O componenta a unui nume de ruta a depait NAME_MAX caractere sau un nume de ruta intreg a depait PATH_MAX caractere. ENOENT Fiierul numit nu exista. ENOMEM Memorie insuficienta. ENOTDIR O componenta a prefixului de ruta nu este un director. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |realpath() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ VERSIUNI Extensii GNU Daca apelul eueaza fie cu EACCES, fie cu ENOENT i resolved_path nu este NULL, atunci prefixul din path care nu poate fi citit sau nu exista este returnat in resolved_path. STANDARDE POSIX.1-2008. ISTORIC 4.4BSD, POSIX.1-2001, Solaris. POSIX.1-2001 spune cu privire la comportamentul in cazul in care resolved_path este NULL, ca este definit de implementare. POSIX.1-2008 specifica comportamentul descris in aceasta pagina. In 4.4BSD i Solaris, limita de lungime a numelui de ruta este MAXPATHLEN (se gasete in ). SUSv2 prescrie PATH_MAX i NAME_MAX, aa cum se gasete in sau cum este furnizata de funcia pathconf(3). Un fragment tipic de sursa ar fi #ifdef PATH_MAX path_max = PATH_MAX; #else path_max = pathconf(path, _PC_PATH_MAX); if (path_max <= 0) path_max = 4096; #endif (Dar consultai seciunea ERORI). ERORI Versiunea standard POSIX.1-2001 a acestei funcii este incorecta prin proiectare, deoarece este imposibil sa se determine o dimensiune adecvata pentru memoria tampon de ieire, resolved_path. In conformitate cu POSIX.1-2001, este suficienta o memorie tampon de dimensiune PATH_MAX, dar PATH_MAX nu trebuie sa fie o constanta definita i este posibil sa trebuiasca sa fie obinuta folosind pathconf(3). Iar solicitarea lui pathconf(3) nu ajuta cu adevarat, deoarece, pe de o parte, POSIX avertizeaza ca rezultatul lui pathconf(3) poate fi uria i nepotrivit pentru alocarea de memorie, iar pe de alta parte, pathconf(3) poate returna -1 pentru a indica faptul ca PATH_MAX nu este delimitat. Caracteristica resolved_path == NULL, care nu este standardizata in POSIX.1-2001, dar este standardizata in POSIX.1-2008, permite evitarea acestei probleme de proiectare. CONSULTAI I realpath(1), readlink(2), canonicalize_file_name(3), getcwd(3), pathconf(3), sysconf(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.9.1 2 mai 2024 realpath(3)