Provided by: manpages-pl-dev_20060617-1_all bug

NAZWA

       getcwd,  get_current_dir_name,  getwd  -  odczytanie bieżącego katalogu
       roboczego

SKŁADNIA

       #include <unistd.h>

       char *getcwd(char *buf, size_t size);
       char *get_current_dir_name(void);
       char *getwd(char *buf);

OPIS

       Funkcja  getcwd()  kopiuje  nazwę  bezwzględnej  ścieżki  dostępu   dla
       bieżącego katalogu roboczego do tablicy wskazywanej przez buf, która to
       tablica ma długość size.

       Jeśli  nazwa  bieżącej  bezwzględnej  ścieżki  dostępu  wymaga   bufora
       dłuższego  niż  size  elementów,  to  zwracane  jest  NULL a errno jest
       ustawiane na ERANGE; aplikacja powinna sprawdzać, czy nie wystąpił  ten
       błąd i przydzielać większy bufor, jeśli jest to potrzebne.

       Jeśli buf jest równe NULL, zachowanie getcwd() jest nieokreślone.

       Jako  rozszerzenie  standardu  POSIX.1, linuksowe (libc4, libc5, glibc)
       getcwd() przydziela bufor dynamicznie korzystając z malloc(), jeśli buf
       jest  równe  NULL podczas wywołania. W tym przypadku przydzielony bufor
       ma długość size, chyba że size jest równe zero. Wówczas  dla  buf  jest
       przydzielane  tyle,  ile  potrzeba.  Jest możliwe (i naprawdę zalecane)
       zwalnianie otrzymanych w ten sposób buforów za pomocą free().

       get_current_dir_name, które jest  jedynie  prototypem  gdy  _GNU_SOURCE
       jest  zdefiniowane, przydzieli za pomocą malloc(3) tablicę dostatecznie
       dużą,  aby  przechować  nazwę   bieżącego   katalogu.   Jeśli   zmienna
       środowiskowa  PWD jest ustawiona, a jej wartość prawidłowa, to zostanie
       zwrócona ta wartość.

       getwd,   które   jest   jedynie   prototypem   gdy   _BSD_SOURCE    lub
       _XOPEN_SOURCE_EXTENDED jest zdefiniowane, nie przydzieli żadnej pamięci
       za pomocą malloc(3).  Argument buf powinien być wskaźnikiem do  tablicy
       o  długości co najmniej PATH_MAX bajtów.  getwd zwróci jedynie pierwsze
       PATH_MAX bajtów nazwy bieżącej ścieżki dostępu.  Należy zwrócić  uwagę,
       że  PATH_MAX  nie musi być stałą określaną podczas kompilacji; może ona
       zależeć od systemu plików, a nawet być nieograniczona.  Ze  względu  na
       przenośność i bezpieczeństwo używanie getwd nie jest zalecane.

WARTOŚĆ ZWRACANA

       NULL  w  przypadku  błędu,  przy jednoczesnym ustawieniu errno, a buf w
       przypadku pomyślnego zakończenia. Zawartość tablicy  wskazywanej  przez
       buf w przypadku błędu jest nieokreślona.

BŁĘDY

       EACCES Brak praw do odczytu lub przeszukiwania składnika nazwy pliku.

       EFAULT buf wskazuje na niewłaściwy adres.

       EINVAL Argument size jest zerowy, a buf nie jest wskaźnikiem NULL.

       ENOENT Bieżący katalog roboczy został skasowany.

       ERANGE Argument   size   jest   mniejszy  od  długości  nazwy  katalogu
              roboczego.   Trzeba  przydzielić  większą  tablicę  i  spróbować
              ponownie.

UWAGI

       Pod  Linuksem,  funkcja getcwd() jest funkcją systemową (od 2.1.92).  W
       starszych systemach mogła ona odpytywać /proc/self/cwd.  Gdy nie ma ani
       funkcji   systemowej,   ani   systemu  plików  /proc,  wywoływana  jest
       implementacja ogólna. Jedynie w takiej sytuacji wywołanie tych  funkcji
       może w razie niepomyślnego zakończenia zwrócić błąd EACCES.

       Funkcje  te  są  często  używane  do zapamiętywania położenia bieżącego
       katalogu roboczego w celu późniejszego powrotu do niego. Gdy dostępnych
       jest   dostatecznie   wiele  deskryptorów  plików,  otwarcie  bieżącego
       katalogu (".")   i  wywołanie  fchdir(2),  aby  wrócić  jest  zazwyczaj
       szybszą  i  bardziej  niezawodną  alternatywą, zwłaszcza na platformach
       innych niż Linux.

ZGODNE Z

       POSIX.1

ZOBACZ TAKŻE

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