Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       getcwd, getwd, get_current_dir_name - obține directorul curent de lucru

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <unistd.h>

       char *getcwd(char buf[.size], size_t size);
       char *get_current_dir_name(void);

       [[depreciat]] char *getwd(char buf[PATH_MAX]);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       get_current_dir_name():
           _GNU_SOURCE

       getwd():
           Începând cu glibc 2.12:
               (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
                   || /* glibc >= 2.19: */ _DEFAULT_SOURCE
                   || /* glibc <= 2.19: */ _BSD_SOURCE
           Înainte de glibc 2.12:
               _BSD_SOURCE || _XOPEN_SOURCE >= 500

DESCRIERE

       Aceste  funcții  returnează  un  șir de caractere cu terminație nulă care conține un nume de rută absolut
       care este directorul de lucru curent al procesului apelant. Numele rutei este  returnat  ca  rezultat  al
       funcției și prin intermediul argumentului buf, dacă este prezent.

       Funcția  getcwd() copiază un nume de rută absolut al directorului curent de lucru în matricea indicată de
       buf, care are lungimea size.

       Dacă lungimea numelui de rută absolut al directorului de lucru curent, inclusiv octetul nul de terminare,
       depășește size octeți, se returnează NULL, iar errno este stabilită la ERANGE;  o  aplicație  trebuie  să
       verifice această eroare și să aloce o memorie tampon mai mare dacă este necesar.

       Ca extensie la standardul POSIX.1-2001, getcwd() al glibc alocă memoria tampon dinamic folosind malloc(3)
       dacă  buf  este NULL. În acest caz, memoria tampon alocată are lungimea size, cu excepția cazului în care
       size este zero, când buf este alocat cât de mare este necesar. Apelantul trebuie să elibereze cu  free(3)
       memoria tampon returnată.

       get_current_dir_name() va aloca cu malloc(3) o matrice suficient de mare pentru a conține ruta absolută a
       directorului  curent  de  lucru. Dacă variabila de mediu PWD este definită, iar valoarea sa este corectă,
       atunci această valoare va fi  returnată.  Apelantul  trebuie  să  elibereze  cu  free(3)  memoria  tampon
       returnată.

       getwd()  nu  malloc(3)  nicio  memorie.  Argumentul  buf trebuie să fie un indicator către o matrice cu o
       lungime de cel puțin PATH_MAX octeți. Dacă lungimea numelui de rută  absolut  al  directorului  de  lucru
       curent,  inclusiv octetul nul de terminare, depășește PATH_MAX octeți, se returnează NULL, iar errno este
       stabilităt la ENAMETOOLONG. - Rețineți că pe unele sisteme, PATH_MAX poate să nu fie o constantă în  timp
       de  compilare;  în plus, valoarea sa poate depinde de sistemul de fișiere, consultați pathconf(3)). - Din
       motive de portabilitate și securitate, utilizarea lui getwd() este depreciată.

VALOAREA RETURNATĂ

       În caz de succes, aceste funcții returnează un indicator către un șir de caractere care conține numele de
       rută al directorului de lucru curent. În cazul  funcțiilor  getcwd()  și  getwd(),  aceasta  are  aceeași
       valoare ca buf.

       În  caz  de  eșec,  aceste  funcții  returnează NULL, iar errno este configurată pentru a indica eroarea.
       Conținutul matricei indicate de buf este nedefinit în caz de eroare.

ERORI-IEȘIRE

       EACCES Permisiunea de a citi sau de a căuta o componentă a numelui fișierului a fost refuzată.

       EFAULT buf indică o adresă greșită.

       EINVAL Argumentul size este zero și buf nu este un indicator nul.

       EINVAL getwd(): buf este NULL.

       ENAMETOOLONG
              getwd(): Dimensiunea șirului de nume de rută absolut cu terminație nulă depășește PATH_MAX octeți.

       ENOENT Directorul curent de lucru a fost dezlegat(șters).

       ENOMEM Memorie insuficientă.

       ERANGE Argumentul size este mai mic decât lungimea numelui de rută  absolut  al  directorului  de  lucru,
              inclusiv octetul nul de încheiere. Trebuie să alocați o matrice mai mare și să încercați din nou.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬───────────────────┬─────────────┐
       │ InterfațăAtributValoare     │
       ├─────────────────────────────────────────────────────────────────────┼───────────────────┼─────────────┤
       │ getcwd(), getwd()                                                   │ Siguranța firelor │ MT-Safe     │
       ├─────────────────────────────────────────────────────────────────────┼───────────────────┼─────────────┤
       │ get_current_dir_name()                                              │ Siguranța firelor │ MT-Safe env │
       └─────────────────────────────────────────────────────────────────────┴───────────────────┴─────────────┘

VERSIUNI

       POSIX.1-2001 lasă comportamentul lui getcwd() nespecificat dacă buf este NULL.

       POSIX.1-2001 nu definește nicio eroare pentru getwd().

VERSIUNI

   Diferențe între biblioteca C și nucleu
       În  Linux,  nucleul oferă un apel de sistem getcwd(), pe care funcțiile descrise în această pagină îl vor
       utiliza dacă este posibil. Apelul de sistem ia aceleași argumente ca și funcția de bibliotecă cu  același
       nume,  dar  este  limitat  la  returnarea  a  cel mult PATH_MAX octeți. (Înainte de Linux 3.12, limita de
       dimensiune a numelui de rută returnat era dimensiunea paginii de sistem. Pe multe  arhitecturi,  PATH_MAX
       și  dimensiunea  paginii  de  sistem sunt ambele de 4096 octeți, dar câteva arhitecturi au o dimensiune a
       paginii mai mare). Dacă lungimea numelui de rută  al  directorului  de  lucru  curent  depășește  această
       limită,  atunci  apelul  de  sistem  eșuează cu eroarea ENAMETOOLONG. În acest caz, funcțiile bibliotecii
       revin la o implementare alternativă (mai lentă) care returnează numele de rută complet.

       În urma unei modificări în Linux 2.6.36, numele de rută returnat de  apelul  de  sistem  getcwd()  va  fi
       prefixat cu șirul „(unreachable)” dacă directorul curent nu se află sub directorul rădăcină al procesului
       curent  (de  exemplu,  deoarece  procesul  a  stabilit  o nouă rădăcină a sistemului de fișiere utilizând
       chroot(2) fără a-și schimba directorul curent în noua rădăcină).  Un  astfel  de  comportament  poate  fi
       cauzat  și  de un utilizator neprivilegiat prin schimbarea directorului curent într-un alt spațiu de nume
       de montare. Atunci când au de-a face cu nume de  rută  din  surse  neîncrezătoare,  apelanții  funcțiilor
       descrise în această pagină ar trebui să ia în considerare verificarea dacă numele de rută returnat începe
       cu  „/”  sau  „(”  pentru a evita interpretarea eronată a unei rute inaccesibile ca fiind un nume de rută
       relativ.

STANDARDE

       getcwd()
              POSIX.1-2008.

       get_current_dir_name()
              GNU.

       getwd()
              Niciunul.

ISTORIC

       getcwd()
              POSIX.1-2001.

       getwd()
              POSIX.1-2001, dar marcat ca ÎNVECHIT. Eliminat în POSIX.1-2008. Utilizați în schimb getcwd().

       Sub Linux, aceste funcții utilizează apelul de sistem getcwd() (disponibil începând cu Linux 2.1.92).  Pe
       sistemele  mai  vechi,  acestea  ar  interoga  /proc/self/cwd. Dacă lipsesc atât apelul de sistem, cât și
       sistemul de fișiere proc, este apelată o implementare generică. Numai în acest  caz  aceste  apeluri  pot
       eșua sub Linux cu EACCES.

NOTE

       Aceste  funcții  sunt  adesea  utilizate  pentru  a  salva locația directorului curent de lucru în scopul
       revenirii la acesta ulterior. Deschiderea directorului curent („.”) și apelarea fchdir(2) pentru a reveni
       este de obicei o alternativă mai rapidă și mai fiabilă atunci când sunt disponibili  suficient  de  mulți
       descriptori de fișiere, în special pe alte platforme decât Linux.

ERORI

       De  la  modificarea  Linux  2.6.36  care  a  adăugat  „(unreachable)” în circumstanțele descrise mai sus,
       implementarea glibc a getcwd() nu s-a conformat POSIX și a returnat un nume de rută relativ  atunci  când
       locația API necesită un nume de rută absolut. Începând cu glibc 2.27, acest lucru este corectat; apelarea
       getcwd() de la un astfel de nume de rută va duce acum la eșec cu ENOENT.

CONSULTAȚI ȘI

       pwd(1), chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3)

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  NICIO
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                          getcwd(3)